Notice
Recent Posts
Recent Comments
Link
«   2025/01   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
Archives
Today
Total
관리 메뉴

cchanmi

[Swift] String.index에 접근해 보자 (2) (Feat: prefix, suffix) 본문

Swift

[Swift] String.index에 접근해 보자 (2) (Feat: prefix, suffix)

cchanmi 2023. 3. 4. 11:43

안녕하세요. :)

 

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/

Comments