swift

swift - Appending Strings and Characters, Replacing Substring, Remove String

행복하게사는게꿈 2021. 1. 6. 20:18

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 != ","
})