안녕하십니까 공부하는 개발자 입니다.
오늘 포스팅은 String Index입니다.
문자열의 index의 같은 경우는 자바에도 있고 다른 언어에서도 사용을 하는 기능입니다.
다만 swift의 경우에는 조금 특이한 특징이 있습니다.
먼저 가장 큰 특징은 swift의 index는 정수가 아니라는 점 입니다.
플레이 그라운드에서
1
2
|
let str = "Swift"
str.startIndex
|
cs |
이러한 형식으로 str의 첫 번째 인덱스를 구하는 메서드를 실행시키면
결과는 String.Index로 나옵니다.
Swift에서는 이 StartIndex와 EndIndex를활용하여 String의 index를 대체합니다.
첫번째 index는 위의 예시처럼 startIndex메서드로 이용이 가능하지만
마지막 인덱스의 경우에는 EndIndex를 사용하면 바로 error가 발생합니다.
EndIndex의 경우에는 위의 예시에서 t를 가리키는게 아니라 t다음을 가르키기 때문입니다.
그렇기 때문에 마지막 index를 정상적으로 구하기 위해서는 EndIndex의 이전 index를 구해야 합니다.
1
2
|
let lastChar = str.index(before: str.endIndex)
let lastCh = str[lastChar]
|
cs |
이러한 형식으로 before를 이용하여 마지막 전 index를 구할 수 있습니다.
이 index를 2번째 line처럼
String[String.index]
이런식으로 작성을 하면 마지막 문자열인 t로 인식을 할 수 있습니다.
마지막으로, 중간에 있는 글자의 index를 구하고 싶다면 2가지 방법이 있습니다.
첫번째는 after사용하기 입니다.
1
2
|
let secondCharIndex = str.index(after: str.startIndex)
let secondChar = str[secondCharIndex]
|
cs |
이러한 형식으로 자신이 가지고 있는 index의 다음 index를 구할 수 있는 메서드 입니다.
두번째는 offsetBy를 이용하는 것 입니다.
1
2
3
|
let thirdCharIndex = str.index(str.startIndex, offsetBy: 2)
print(str[thirdCharIndex])
|
cs |
이런식으로 offsetBy에다 정수를 넣고 시작 index를 넣어주면 원하는 index를 구할 수 있습니다.
아마 대부분index를 구할때는 자신이 원하는 index를 구하기 위해서는 offsetBy를 많이 사용할 것으로 생각 됩니다.
'Ios > Swift' 카테고리의 다른 글
[Swift] swift subString 문자열 자르기 (0) | 2022.06.21 |
---|---|
[Swift] String Basics 문자열 기본 (0) | 2022.06.20 |
[Swift] Swift의 데이터 이동방식 튜플 (0) | 2022.06.15 |
[Swift] Closures 스위프트의 람다 (0) | 2022.06.10 |
[swift] Argument Label 스위프트에 신기했던 문법 (0) | 2022.06.09 |