SwiftのString型文字列の扱いは、これまで慣れ親しんできたPHPなどのプログラミング言語に比べて非常に難しい。

今回は文字列の中から任意の文字を検索し、見つかった位置以降の文字列を取得する方法を紹介する。

rangeメソッドを使って文字列の位置を検索する

まず、Stringのrangeメソッドを使って、指定した文字列が見つかった位置を取得する。

import SwiftUI

let str = "東京都千代田区神南1-2-3"
let result = str.range(of: "東京都")

print(str[result!])
// 東京都

これでresultには見つかった文字列(東京都)の範囲インデックスが格納される。

次に、見つかった位置以降の文字列を取得する場合は、if文を使ったオプショナルバインディングを用いて見つかった位置インデックスをtheRangeに代入し、upperBoundで後ろの範囲の開始位置をレンジ演算子へ渡す。

if let theRange = result {
    let afterStr = str[theRange.upperBound...]
    print(afterStr)
} else {
    print(str)
}

// 千代田区神南1-2-3

これで「東京都」以降の文字列を取得することができた。