본문 바로가기

개발/Swift

[Swift] 문자열 색인

반응형

Character 

- 사람이 문자로 인식하는 것을 나타낸다.
- 문자열은 순차가 아니다. 문자로 형성된 것이 아닌 유니코드로 이루어진 거다.
유니코드란 바이트 단위의 데이터로 거의 모든 언어를 나타낼 수 있는 것이다.

문자열을 정수로 색인하지 않고 대신 특수한 타입으로 (String.Index) 문자열을 다룬다
문자열은 문자의 조합이고 모두 collection으로부터 온 것. (collection은 수열로 이루어짐!)

let pizzaJoint = "Cafe pesto"
let firstCharacterIndex = pizzaJoint.startIndex 
let fourthCharacterIndex = pizzaJoint.index(firstCharacterIndex, offsetBy: 3)
let fourthCharacter = pizzaJoint[fourthCharacterIndex]

if let firstSpace = pizzaJoint.index(of: " "){ // index(of: )는 collection의 메소드
    let secondWordIndex = pizzaJoint.index(firstSpace, offsetBy: 1)
    let secondWord = pizzaJoint[secondWordIndex..<pizzaJoint.endIndex]
}

let value = pizzaJoint.components(seperatedBy: " ")[1]
// components(seperatedBy: )는 collection의 메소드


 

문자열은 값 타입이고 구조체이다.

func replaceSubrange(Range<String.Index>, with: Collection of Character)

replaceSubrange(..<s.endIndex, with: "new contents") // ..< 로 해두어도 타입을 유추할 수 있다면
스위프트가 자동으로 유추한다

Swift는 문자열 조작에 친절하지 않다

 

문자열 속 문자를 찾는 방법은 index(i: , offsetBy: ) 방법이 주로 쓰인다.

let str = "안녕하세요오"
let range = str.index(str.startIndex, offsetBy: 2) ... str.index(str.endIndex, offsetBy: -2)
print(str[range]) // 하세요

 

특정 문자를 찾아 나누는 방법으로 split이 유용하다.

let str = "하이 헬로우 안녕"
print(str.split(separator: " ")) // ["하이", "헬로우", "안녕"]
반응형

'개발 > Swift' 카테고리의 다른 글

[Swift] Interface  (0) 2021.02.26
[Swift] NSAttributedString  (0) 2021.02.25
[Swift] Protocol 알아보기  (0) 2021.02.25
[Swift] 프로토콜 지향 프로그래밍  (0) 2020.08.13
[Swift] Typealias  (0) 2020.03.12