cchanmi
[Swift] String.index에 접근해 보자 (2) (Feat: prefix, suffix) 본문
안녕하세요. :)
Swift 언어에서 문자열에 index에 접근하는 것이 까다로워서 두 번째 글을 작성하게 되었어요.
저번 글들에서 다루지 않았던 것들 위주로 다뤄볼 테니, 저번 글을 읽고 오면 더 좋을 것 같습니다!
1. prefix
prefix는 문자열의 앞에서부터 접근합니다.
let string = "hello, swift"
let str1 = string.hasPrefix("h") // true
차례대로 하나씩 봐보겠습니다.
hasPrefix는 파라미터로 들어간 값으로 시작하는지, 아닌지를 판단해 주는 메서드입니다.
return 타입이 bool 타입이네요.
let str2 = string.prefix(5) // hello
prefix는 n만큼 문자열의 index를 접근해 주는 메서드입니다.
let str3 = string.prefix(100) // hello, swift
prefix는 접근하려는 string의 그 이상의 값을 파라미터로 넣어도 오류가 발생하지 않습니다.
이건 좋은 것 같네요!
// stating.startIndex 포함
let str4 = string.prefix(through: string.startIndex) // h
prefix(through:) 메서드는 해당 파라미터의 index부터 포함하는 메서드입니다.
// 보통 ~까지라는 뜻, string.startIndex를 포함하지 않고 반환...
let str5 = string.prefix(upTo: string.endIndex) // hello, swift
반대로 upTo 메서드는 해당 파라미터의 index를 포함하지 않고, 그이전의 index부터 접근하는 방식이네요.
아까의 prefix와 다르게 through, upTo는 index 범위에 벗어나게 되면 에러가 발생하니 주의해 주도록 합시다.
let str6 = string.prefix(while: { (string) -> Bool in // hello,
return string != " "
})
찾아보니 요런 while문으로 된 클로저도 있었네요.
string의 값이 빈 공백의 문자열과 다를 경우 string의 prefix의 값을 해당 변수에 담아 주고 있습니다.
return 타입은 Bool이네요.
2. suffix
prefix가 앞에서부터 시작한다면 suffix는 문자열 인덱스의 뒤에서부터 접근합니다.
let string = "hello, swift"
let str7 = string.hasSuffix("t") // true
똑같이 hello, swift라는 문자열을 예시로 두고,
hasSuffix 메서드를 통해 t로 시작하는지, 아닌지를 판단해 줄 수 있습니다.
let str8 = string.suffix(5) // swift
아까와 동일하겠네요!
뒤에서부터 5번째 글자를 접근하게 됩니다.
let str9 = string.suffix(from: string.startIndex) // hello, swift
from은 뒤에서부터 파라미터로 들어온 해당 index까지 포함하게 됩니다.
string.startIndex까지 접근하는 것이기 때문에, 예제 문장 전체가 출력이 되네요.
let str10 = string.suffix(100) // hello, swift
suffix 역시 prefix와 같이 접근하려는 string보다 큰 값이 나와도 전체 문자열을 반환해 줄 뿐, 에러가 발생하지 않습니다.
출처
https://zeddios.tistory.com/1321
https://sarunw.com/posts/different-ways-to-check-string-prefix-in-swift/
'Swift' 카테고리의 다른 글
[Swift] Dictionary에서 value를 이용해 key 구하기 (0) | 2023.05.18 |
---|---|
[Swift] Dictionary, Set 들어온 순서대로 값 출력하기 (0) | 2023.05.13 |
[Swift] String index에 접근해 보자 (Feat: Substring) (0) | 2022.09.14 |
[Swift] 문자열의 문자 재정렬 (reversed, sort, sorted) (0) | 2022.09.06 |