Swiftで指定した文字列を置換する方法について記載します。
目次
文字列の置換方法
文字列の置換には replaceSubrange メソッドを使用します。
以下では
・指定した文字列が存在する場合、置換する方法
・指定した範囲(インデックス)の文字列を置換する方法
について記載します。
1. 指定した文字列が存在する場合に置換する方法
指定した文字列の検索には、rangeメソッドを使用します。
値が存在した場合に、replaceSubrangeメソッドを使用して置換します。
1 2 3 4 5 6 7 8 9 10 11 12 |
// 文字列 c が存在したら、c を ● に置換 var str1 = "abcde" if let range1 = str1.range(of:"c") { str1.replaceSubrange(range1, with: "●") // "ab●de" } // 文字列 cd が存在したら、cd を ● に置換 var str2 = "abcde" if let range2 = str2.range(of:"cd") { str2.replaceSubrange(range2, with: "●") // "ab●e" } |
2. 指定した範囲(インデックス)の文字列を置換する方法
次はインデックスで範囲を指定する方法です。
インデックスの指定方法では、置換範囲の開始インデックスと終了インデックスを指定します。
1点注意が必要なのは、指定した終了インデックスの1つ前の値までが置換されます。
例えば、置換対象文字列 abcde で置換範囲を 1 〜 3 と指定した場合、終了インデックスの 3 は置換対象に含まれず、置換されるのは、インデックス 1 〜 2(bc)になります。
1 2 3 4 5 6 7 8 |
// インデックスで範囲指定して置換(開始位置のインデックス、終了位置のインデックス var str3 = "abcde" let startIdx = str3.index(str3.startIndex, offsetBy: 1) // 開始位置(含む) let endIdx = str3.index(str3.startIndex, offsetBy: 3) // 終了位置(含まない) let range3 = startIdx..<endIdx str3.replaceSubrange(range3, with: "●") // "a●de" |