Swift는 문자열 다루기가 엄청 어렵다는 글을 봐버렸다....
📍 Swift는 대괄호를 통한 문자열 접근이 불가능하다!
📍 String.Index
를 대신 사용해야한다
startIndex
: 문자열의 시작 요소 인덱스endIndex
: 문자열의 마지막 요소 인덱스의 다음 요소의 인덱스index(before: String.Index)
: 인자로 들어온 인덱스의 한 칸 앞 요소 인덱스str[str.index(before: str.endIndex)]
로 접근해야 한다!index(after: String.Index)
: 인자로 들어온 인덱스 한 칸 뒤 요소 인덱스index(String.Index, offsetBy: String.IndexDistance)
: 인자로 들어온 인덱스로부터 IndexDistance
만큼 떨어진 요소 인덱스str.index(str.startIndex, offsetBy: 2] == str[2]
firstIndex(of: Character)
: 인자로 들어온 문자와 일치하는 요소 중 가장 먼저 나오는 인덱스lastIndex(of: Character)
: 인자로 들어온 문자와 일치하는 요소 중 가장 뒤에 나오는 인덱스📍 insert(_, at:)
: 문자열의 특정 인덱스에 다른 문자를 삽입하고 싶은 경우 사용한다
📍 insert(contentsOf:, at:)
: 문자열의 특정 인덱스에 다른 문자열을 삽입하고 싶은 경우 사용한다
📍 remove(at:)
: 특정 인덱스의 문자를 삭제할 때 사용한다
→ 제거된 값이 반환된다
📍 removeSubrange(range)
: 특정 범위 안의 부분문자열을 삭제할 때 사용한다
→ 제거되고 남은 값이 반환된다
var str = "Hello, World!"
str.remove(at: str.index(str.startIndex, offsetBy: 5)) // "," 반환
str // Hello World!
let range = str.index(str.endIndex, offsetBy: -7)..<str.endIndex // " World!"에 해당하는 범위
str.removeSubrange(range) // "Hello" 반환
str // Hello
📍 비교연산자를 이용해 비교 가능하다
📍 hasPrefix(str)
: 매개변수로 받은 접두사를 가지고 있는지 확인한다
📍 hasSuffix(str)
: 매개변수로 받은 접미사를 가지고 있는지 확인한ㄷ
📍 반환 값은 Boolean
이다
📍 str.replacingOccurences(of: target, with: toChange)
: 특정 글자를 다른 글자로 대체할 때 사용한다
📍 Foundation
프레임워크가 필요하다
import Foundation
var str = "Hello world!"
str.replacingOccurences(of: "Hello", with: "hello")
📍 클래스, 구조체, 열거형에서 시퀀스의 멤버요소에 접근할 수 있도록 한다
📍 배열 등에서 []
로 요소에 접근하는 것도 subscript
이다
→ 배열의 subscript
는 매개변수로 Int
형을 받고, 해당 인덱스의 요소를 반환하는 것
📍 subscript
를 오버로딩한다면 String
타입도 []
를 이용해 인덱스만으로도 해당 인덱스의 요소를 가져오도록 할 수 있다
public extension StringProtocol {
subscript (i: Int) -> Element {
return self[index(startIndex, offsetBy: i)]
}
}
let str = "Hello"
print(str[2]) // l