iOS/Swift 상식

Swift - String의 SubScript 접근

HJ39 2023. 1. 23. 22:08

SubScript의 개념을 모른다면 Swift 문법과 친해지기 - Subscript 편을 읽고 오시면 됩니다.!

 

 

Swift 문법과 친해지기 - Subscript

subscript 서브스크립트는 우리가 배열을 사용할 때 배열 속 원소에 접근하기 위해 사용하는 대괄호 []를 지칭한다. □ 배열 서브스크립트 정의 → index를 int타입으로 받고 Element를 반환한다. □ 딕

hj39-develop.tistory.com

 

우리가 문자열을 사용할 때 각 문자하나를 추출하여 사용하고 싶을 때가 있을 것이다.

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 출력

 

 

 

 

# 참고한 사이트 

  1. https://h4njun.tistory.com/entry/String%EC%9D%80-%EC%99%9C-Int%EB%A1%9C-Subscript-%EB%90%98%EC%A7%80-%EC%95%8A%EC%9D%84%EA%B9%8C

'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