Swiftで指定した文字列を削除する方法について記載します。
目次
文字列を削除する方法
remove メソッド
文字列の中から 1文字のみ削除 する場合に使用します。
removeAll メソッド
文字列の中から 一致する全ての文字を削除 する場合に使用します。
1文字のみ削除する方法( remove )
最初にヒットした文字のみ削除
次の例では、文字列 abcabc を検索し、最初にヒットした c を削除します。
1 2 3 4 5 6 7 8 |
var str1 = "abcabc" // 文字 "C" が存在する場合に削除 if let i = str1.firstIndex(of: "c") { str1.remove(at: i) } print(str1) // ababc |
インデックスを指定して削除(先頭から指定)
次の例では、文字列の先頭からインデックスを指定して、文字を削除します。
1 2 3 4 5 6 7 8 |
var str2 = "abcde" // 削除するインデックスを生成 let delIdx2 = str2.index(str2.startIndex, offsetBy: 1) // 先頭からのインデックスを指定 // 文字列から指定したインデックスを削除 str2.remove(at: delIdx2) print(str2) // acde |
インデックスを指定して削除(末尾から指定)
次の例では、文字列の末尾からインデックスを指定して、文字を削除します。
1 2 3 4 5 6 7 8 |
var str3 = "abcde" // 削除するインデックスを生成 let delIdx3 = str3.index(str3.endIndex, offsetBy: -1) // 末尾からのインデックスを指定 // 文字列から指定したインデックスを削除 str3.remove(at: delIdx3) print(str3) // abcd |
一致する全ての文字を削除する方法( removeAll )
指定した文字を全て削除
次の例では、文字列から文字 “c” を削除します。
1 2 3 4 5 6 7 8 |
var str4 = "abcabc" let del4: Set<Character> = ["c"] // 削除する文字を指定 // 文字列から "c" を削除 str4.removeAll(where: { del4.contains($0) }) print(str4) //abab |
上記のように、削除する文字は Set で指定します。
なので、次のように一度に複数の文字を指定することができます。
1 2 3 4 5 6 7 8 |
var str5 = "abcabc" let del5: Set<Character> = ["a","c"] // a と c を削除 // 文字列から "a" と "c" を削除 str5.removeAll(where: { del5.contains($0) }) print(str5) //bb |