🔥 문자열의 문자 수 세기
Swift에서는 문자열의 문자 수를 세는 방법이 매우 간단합니다. 바로 문자열의 count
속성을 사용하면 됩니다.
let unusualMenagerie = "Koala 🐨, Snail 🐌, Penguin 🐧, Dromedary 🐪" print("unusualMenagerie has \(unusualMenagerie.count) characters") // "unusualMenagerie has 40 characters" 출력
swift
위 코드에서는 unusualMenagerie
라는 문자열을 선언하고, 해당 문자열의 count
속성을 출력하고 있습니다. 출력 결과를 보면 unusualMenagerie
문자열은 총 40개의 문자로 이루어져 있다는 것을 알 수 있죠.
하지만 여기서 주의할 점이 있습니다. Swift에서는 확장된 자소 클러스터(extended grapheme clusters)를 사용하여 Character
값을 표현하기 때문에, 문자열 연결이나 수정이 항상 문자 수에 영향을 미치지는 않습니다.
예를 들어, 4글자 단어 "cafe"
로 새로운 문자열을 초기화한 다음 COMBINING ACUTE ACCENT
(U+0301
)를 문자열 끝에 추가하면, 결과 문자열은 여전히 문자 수가 4개입니다. 네 번째 문자는 e
가 아니라 é
가 되는 거죠.
var word = "cafe" print("the number of characters in \(word) is \(word.count)") // "the number of characters in cafe is 4" 출력 word += "\\u{301}" // COMBINING ACUTE ACCENT, U+0301 print("the number of characters in \(word) is \(word.count)") // "the number of characters in café is 4" 출력
swift
위 코드에서 word
변수는 초기에 "cafe"
로 설정되었습니다. 이때 word
의 문자 수는 4개입니다.
그런 다음 COMBINING ACUTE ACCENT
(U+0301
)를 word
변수에 추가했습니다. 이 문자는 이전 문자와 결합되어 하나의 문자로 취급되므로, word
의 문자 수는 여전히 4개로 유지됩니다. 다만 마지막 문자가 e
에서 é
로 변경되었을 뿐이죠.
이처럼 Swift에서는 문자열 연결이나 수정 시 확장된 자소 클러스터를 사용하기 때문에, 직관적이지 않은 결과가 나올 수 있습니다. 따라서 문자열을 다룰 때는 이 점을 유의해야 합니다.
이해를 돕기 위해 문자열의 문자 수 변화를 그래프로 나타내 보겠습니다.
문자열 문자 수 café 4 ↑ cafe 4 ↑ ca 2 ↑ c 1 ↑ (empty) 0
text
위 그래프에서 보듯이, 문자열 끝에 결합 문자를 추가해도 문자 수는 변하지 않습니다. 오직 문자열에 새로운 문자를 추가할 때만 문자 수가 증가하는 것을 확인할 수 있습니다.
이상으로 Swift에서 문자열의 문자 수를 세는 방법과 그 특징에 대해 알아보았습니다. 확장된 자소 클러스터로 인한 직관적이지 않은 동작에 유의하면서, count
속성을 사용해 보세요!