유니코드 문자로 구성된 문자열
A Unicode string value that is a collection of characters.
"Swift"처럼 일련의 문자들의 모음을 말한다.
let greeting = "Welcome!"
let banner = """
__,
( o /) _/_
`. , , , , // /
(___)(_(_/_(_ //_ (__
/)
(/
"""
"""로 여러 줄의 문자열 사용이 가능하다. 다중열을 한 줄 내려서 써야한다.
let longerGreeting = greeting + " We're glad you're here!"
// longerGreeting == "Welcome! We're glad you're here!"
let cafe1 = "Cafe\u{301}"
let cafe2 = "Café"
print(cafe1 == cafe2)
// Prints "true"
'==' 와 더불어 '<', '>=' 와 같은 비교 구문은 항상 유니코드 표준 표현을 사용하여 가능하다.
문자열 중간에 \()를 넣어 표현식이나 변수를 문자열로 만들 수 있다. 변수면 변수의 값이, 표현식이면 결과 값이 들어간다.
let name = "Rosa"
let personalizedGreeting = "Welcome, \(name)!"
// personalizedGreeting == "Welcome, Rosa!"
let price = 2
let number = 3
let cookiePrice = "\(number) cookies: $\(price * number)."
// cookiePrice == "3 cookies: $6."
문자열은 Character로 구성되어 for-in 구문으로 각 요소에 접근할 수 있다.
let str = "string"
for c in str{
print("element : \(c)")
}
// element : s
// element : t
// element : r
// element : i
// element : n
// element : g
서브스크립트를 사용해서 접근할 수도 있다. 대괄호 '[]'를 이용하는데 문자열을 Int값의 인덱스로 접근할 수 없고 대신 String.Index 형을 이용해야 한다.
let str = "Hello"
str[..<str.endIndex] // Hello
인덱스를 구한 후 대괄호를 통해 문자열에 접근할 수 있다.
let str = "ABCDE"
str[str.startIndex] // A
str[str.index(after: str.startIndex)] // B
str[str.index(before: str.endIndex)] // E
str[str.index(str.startIndex, 2)] // C
str[str.startIndex ..< str.endIndex] // ABCDE
func firstIndex(of element: Character) -> Index?
// 문자가 앞에서 몇 번째인지
func lastIndex(of element: Character) -> Index?
// 문자가 뒤에서 몇 번째인지
문자열의 조각을 이용하면 String 형이 아닌 Substring 형이 된다. 원래 문자열의 저장소를 그대로 이용하기 때문에 빠르고 효율적이다.
func prefix(Int) -> Substring // 앞에서부터 Int만큼의 길이 문자열
func suffix(_ maxLength: Int) -> Substring // 뒤에서부터 Int만큼의 길이 문자열
let numbers = [1, 2, 3, 4, 5]
print(numbers.prefix(2))
// Prints "[1, 2]"
print(numbers.prefix(10))
// Prints "[1, 2, 3, 4, 5]"
print(numbers.suffix(2))
// Prints "[4, 5]"
print(numbers.suffix(10))
// Prints "[1, 2, 3, 4, 5]"
각각 upto, from 으로 인덱스를 넣어주면 [처음-인덱스]/[인덱스-끝] 를 얻을 수 있다.
let str = "hello"
let arr = Array(str)
print(arr)
//["h", "e", "l", "l", "o"]
let str = "hello"
let arr = str.map { String($0) }
print(arr)
//["h", "e", "l", "l", "o"]
let str = "Hello World"
if let index = str.firstIndex(of: "o") {
print(index) // 4
}
if let index = str.lastIndex(of: "o") {
print(index) // 7
}
func contains(_ element: Character) -> Bool
let name = "My name is James"
print(name.contains("James"))
// Prints "true"
print(cast.contains("Kim"))
// Prints "false"
func uppercased() -> String // 대문자로 변환
func lowercased() -> String // 소문자로 변환
새로운 String을 만들어 냄
let cafe = "Café 🍵"
print(cafe.uppercased())
// Prints "CAFÉ 🍵"
let cafe = "BBQ Café 🍵"
print(cafe.lowercased())
// Prints "bbq café 🍵"
var count: Int { get }
문자열을 숫자로 변경
문자열에서 위치 값 접근
문자열에서 문자 얻기