Appending Strings and Characters
var str = "Hello"
// append -> 대상 문자열을 직접 변경
// appending -> 직접 변경하지 않고 새로운 string 리턴
str.append(", ")
// ~ed, ~ing 붙은 메소드는 원본을 변경하지 않는다.
let s = str.appending("Swift")
str
s
// appendingFormat : 원하는 포맷으로 변경된 문자열 리턴
"File size is ".appendingFormat("%.1f", 12.3456)
var str2 = "Hello Swift"
str2.insert(",", at: str.index(str.startIndex, offsetBy: 5))
if let sIndex = str2.firstIndex(of: "S") {
str2.insert(contentsOf: "Awesome", at: sIndex)
}
str2
Replacing Substring
var str = "Hello, Objective-C"
// 문자열의 범위 검색
if let range = str.range(of: "Objective-C"){
// 범위내의 문자열을 replace
str.replaceSubrange(range, with: "Swift")
}
str
if let range = str.range(of: "Hello") {
let s = str.replacingCharacters(in: range, with: "Hi")
s
str
}
// 문자열에 Swift가 포함되어 있다면 이 문자열을 Awesome Swift로 바꿔 리턴해줌
var s = str.replacingOccurrences(of: "Swift", with: "Awesome Swift")
s
// options에 준게 뭘까?
s = str.replacingOccurrences(of: "Swift", with: "Awesome Swift", options: [.caseInsensitive])
Remove String
var str = "Hello, Awesome Swift!!!"
let lastCharIndex = str.index(before: str.endIndex)
var removed = str.remove(at: lastCharIndex)
str
removed
removed = str.removeFirst()
removed
str
str.removeFirst(2)
removed = str.removeLast()
str.removeLast(2)
removed
str
if let range = str.range(of: "Awesome") {
// 범위 삭제 메소드
str.removeSubrange(range)
str
}
str.removeAll()
str
// 이렇게하면 메모리공간은 삭제되지 않는다.
str.removeAll(keepingCapacity: true)
// drop
// 모두 Substring을 리턴함
str = "Hello, Awesome Swift!!!"
// dropLast()
// 원본 문자열에서 마지막 문자열을 제외한 모든 문자열을 리턴
var substr = str.dropLast()
// 마지막 3개의 문자열을 제외한 모든 문자열을 리턴
substr = str.dropLast(3)
// .drop(while: <#T##(Character) throws -> Bool#>)
// 클로저를 파라미터로 받는데 클로저에서 true를 리턴할때는 계속삭제 false를 리턴할때까지
substr = str.drop(while: { (ch) -> Bool in
return ch != ","
})