문자열은 큰 따옴표로 묶여진 문자의 조합이다.
let someString = "Some string literal value"
let quatation = """
It's an apple. "Hi,
Apple!!"
출력 결과에는 영향을 끼치지 않고 코드를 읽기 용이하기 위해 줄바꿈을 하고 싶다면 \를 사용하자.
let soft = """
Hi there \
It's Nick
"""
// Hi there It's Nick
\0, \, \t, \n, \r, \", \'
\u{n}
let words = "\"Hi\"" // "Hi"
let heart = "\u{1F496}" // 💖
다음과 같은 방법으로 빈 스트링을 생성합니다.
var emptryString = ""
var anotherEmptyString = String()
isEmpty를 통해 빈 String인지 판별도 가능하다.
if emptyString.isEmpty {
print("empty!")
}
String Mutability (스트링 변경)
String은 직접 수정하거나 덧셈 연산을 통해 수정이 가능하다.
var variableString = "Horese"
variableString += " and carriage"
let constantString = "Hi"
constantString += " there"
// wrong
Strings are Value Type (스트링은 값 타입)
String은 값타입이다. 만약 함수나 메소드에 새로운 String 값을 생성하면 그 String 값은 복사되어진다. 복사되어진 String 값이 수정되어도 원본 String 값은 변하지 않는다.
Working with Characters (문자)
문자열을 for-in loop을 사용해 접근 가능하다.
for character in "Dog!" {
print(character)
}
문자 상수를 선언 가능하다.
let character: Character = "!"
문자 배열을 문자열 초기화 메소드에 넣어 문자열을 생성 가능하다.
let cat: [Character] = ["C", "a", "t"]
let catString = String(catCharacters)
print(catString) // "Cat"
Concatenating Strings and Characters (문자열과 문자의 결합)
let string1 = "hello"
let string2 = " there"
var welcome = string1 + string2
// "hello there"
String Interpolation (문자열 삽입)
\ ()를 이용해 상수, 변수, 리터럴 값을 문자열에 추가할 수 있다.
let multiplier = 3
let message = "\(multiplier) times 2.5 is \(Double(mulitplier) * 2.5)"
// "3 times 2.5 is 7.5"
Unicode (유니코드)
Swift의 네이티브 문자열 타입은 유니코드 스칼라 값으로 만들어졌다.
문자열 인덱스
let greeting = "Guten Tag!"
greeting[greeting.startIndex]
//G
greeting[greeting.index(before: greeting.endIndex)]
// !
greeting[greeting.index(after: greeting.startIndex)]
// u
let index = greeting[greeting.index(b greeting.startIndex, offsetBy: 7)]
greeting[index]
// a
문자열의 인덱스를 벗어나면 런타임 에러가 발생한다.
문자열의 개별 문자를 접근하기 위해서는 indices 프로퍼티를 사용한다.
for index in greeting.indices {
print("\(greeting[index]) ", terminator: "")
}
// G u t e n T a g !
Inserting and Removing (문자의 삽입과 삭제)
var welcome = "hello"
welcome.insert("!", at: welcome.endIndex)
// welcome : hello!
welcome.insert(contentsOf: " there", at: welcome.index(before: welcome.endIndex))
// welcome : hello there!
welcome.remove(at: welcome.index(before: welcome.endIndex))
// welcome : hello there
let range = welcome.index(welcome.endIndex, offsetBy: -6)..<welcome.endIndex
welcome.removeSubrange(range)
// welcome : hello
이 메소드들은 Array, Dictionary, Set 등에서도 동일하게 사용할 수 있다.
Substrings (부분 문자열)
서브스크립트 메소드를 이용하여 얻은 부분 문자열은 부분문자열(SubString) 인스턴스이다. 오랜기간 사용할 경우 문자열 인스턴스로 바꿔서 사용하는 게 좋다.
let greeting = "Hello, World!"
let index = greeting.index(of: ",") ?? greeting.endIndex
let beginning = greeting[..<index]
// beginning : Hello
// SubString인 beginning을 String으로 변환
let newString = String(beginning)
Comparing Strings (문자열과 문자 비교)
문자열과 문자 비교에는 ==, != 를 사용한다
Prefix and Suffix Equality (접두사와 접미사 비교)
hasPrefix(:) 문자열 배열에 해당 접두어가 몇개 들었는지 확인
hasSuffix(:) 문자열 배열에 해당 접미어가 몇개 들었는지 확인
Unicode Representations of Strings (문자열의 유니코드 표현)
utf-8
utf-16
unicode scalar