문자열 리터럴 (Strings)
// 문자열은 큰 따옴표(“)로 묶어 표현 합니다.
let something = "Some string literal value"
// 여러줄 문자열을 사용할 때는 첫 시작의 """ 다음 줄부터 마지막 """의 직전까지를 문자열로 봅니다.
let quotation = """
The White Rabbit put on his spectacles. "Where shall I begin,
please your Majesty?" he asked.
"Begin at the beginning," the King said gravely, "and go on
till you come to the end; then stop."
"""
빈 문자열 초기화
var emtpryString = ""
var anotherEmptyString = String()
문자 (Characters)
// 문자열의 개별 문자를 for-in loop을 사용해 접근할 수 있습니다.
for character in "Dog!🐶" {
print(character)
}
// D
// o
// g
// !
// 🐶
문자열 삽입
// \(백슬래쉬 괄호)를 이용해 상수, 변수, 리터럴 값을 문자열에 추가할 수 있습니다.
let mutiplier = 3
let message = "\(multiplier) times 2.5 is \(Double(multiplier) * 2.5)"
// message : "3 times 2.5 is 7.5"
문자 세기
// 문자열의 문자의 순자를 세기 위해서는 문자열의 count 프로퍼티를 이용합니다.
let unusualMenagerie = "Koala 🐨, Snail 🐌, Penguin 🐧, Dromedary 🐪"
print("unusualMenagerie has \(unusualMenagerie.count) characters")
// "unusualMenagerie의 문자는 40개"
문자열 인덱스
let greeting = "Guten Tag!"
greeting[greeting.startIndex]
// G
greeting[greeting.index(before: greeting.endIndex)]
// !
greeting[greeting.index(after: greeting.startIndex)]
// u
let index = greeting.index(greeting.startIndex, offsetBy: 7)
greeting[index]
// a
문자의 삽입과 삭제
// 문자의 삽입과 삭제에는 insert(:at:), insert(contentsOf:at:), remove(at:), removeSubrange(:) 메소드를 사용할 수 있습니다.
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
부분 문자열
/*
문자열에서 부분문자를 얻기 위해 prefix (_:)와 같은 서브스크립트 메소드를 이용할 수 있는데,
그렇게 얻은 부분 문자열은 문자열(String) 인스턴스가 아니라 부분문자열(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)
// 위와 같이 사용해야하는 것이 좋은 이유는 메모리 관리 때문입니다.
접두사와 접미사 비교
let romeoAndJuliet = [
"Act 1 Scene 1: Verona, A public place",
"Act 1 Scene 2: Capulet's mansion",
"Act 1 Scene 3: A room in Capulet's mansion",
"Act 1 Scene 4: A street outside Capulet's mansion",
"Act 1 Scene 5: The Great Hall in Capulet's mansion",
"Act 2 Scene 1: Outside Capulet's mansion",
"Act 2 Scene 2: Capulet's orchard",
"Act 2 Scene 3: Outside Friar Lawrence's cell",
"Act 2 Scene 4: A street in Verona",
"Act 2 Scene 5: Capulet's mansion",
"Act 2 Scene 6: Friar Lawrence's cell"
]
// 문자열 배열에서 접두어 Act 1가 몇개 들어있는지 확인하는 코드 입니다.
var act1SceneCount = 0
for scene in remeoAndJuliet {
if scene.hasPrefix("Act 1 ") {
act1SceneCount += 1
}
}
print("There are \(act1SceneCount) scenes in Act 1")
// There are 5 scenes in Act 1
// Capulet's mansion 과 Friar Lawrences' cell 이 각각 몇개 들어있는지 확인하는 코드 입니다.
var mansionCount = 0
var cellCount = 0
for scene in remeoAndJuliet {
if scene.hasSuffix("Capulet's mansion") {
mansionCount += 1
} else if scene.hasSuffix("Friar Lawrence's cell") {
cellCount += 1
}
}
print("\(mansionCount) mansion scenes; \(cellCount) cell scenes")
// 6 mansion scenes; 2 cell scenes
출처 https://jusung.gitbook.io/the-swift-language-guide/language-guide/03-strings-and-characters
'Swift Language' 카테고리의 다른 글
Swift Language - 6 - 클로저 (Closures) (0) | 2023.01.26 |
---|---|
Swift Language - 5 - 함수 (Functions) (0) | 2023.01.25 |
Swift Language - 4 - 제어문 (Control Flow) (0) | 2023.01.25 |
Swift Language - 3 - 콜렉션 타입 (Collection Types) (0) | 2023.01.25 |
Swift Language - 1 - 기본 연산자 (Basic Operators) (0) | 2023.01.24 |