SubScript의 개념을 모른다면 Swift 문법과 친해지기 - Subscript 편을 읽고 오시면 됩니다.!
우리가 문자열을 사용할 때 각 문자하나를 추출하여 사용하고 싶을 때가 있을 것이다.
var num: String = "12345"
print(num[0]) //오류
특히 백준 알고리즘 문제를 풀 때 Swift를 사용하는 사람은 드물겠지만.. 아무튼 String타입으로 들어온 값을 분리하여 하나만 사용하고 싶을 때 다른 언어에서는 num[0]를 하면 1이라는 문자가 추출된다.
하지만 swift에서는 접근할 수 없다.
왜냐?!
미리 스포 하는 결론: Swift는 유니코드를 지원하기 때문이다!
끝!
이 아니라 원리를 알아야죠 ㅎㅎ
유니코드를 인코딩할 때 문자 크기를 가변적으로 할당한다고 합니다..
즉 아스키코드는 문자를 처리할 때 고정적으로 1바이트(8bit)를 사용하지만 유니코드는 가변적으로 1 ~ 4바이트를 사용한다고 한다.
따라서 Swift에서 문자하나를 참조하기 위해서는 다음과 같이 사용한다.
let name: String = "12345"
let nameIndex = name.index(name.startIndex,offsetBy: 1)
print(nameIndex) // Index(_rawBits: 65799) 출력
print(name[nameIndex]) // 2 출력
# 참고한 사이트
'iOS > Swift 상식' 카테고리의 다른 글
Delegate 패턴 알아보기 (0) | 2023.02.04 |
---|---|
Instance Method, Type Method (0) | 2023.02.04 |
Swift - Optional (0) | 2023.01.23 |
Swift - Any vs AnyObject (0) | 2023.01.23 |
Swift - Convenience init (0) | 2023.01.23 |