文字列を特定の文字列で分割して配列にする場合は,
let str: String = "abc,def,ghi"
let array = str.components(separatedBy: ",")
// => ["abc", "def", "ghi"]
という風にすればできるが,例えば"aaaxxxbbbxxxccc"のような文字列で,先頭からみて最初に現れるxxxの前後で文字列を分割したいというような場合は余計に分割されてしまう.
こういう時はRange<String.Index>
をうまく扱う.
let str: String = "aaaxxxbbbxxxccc"
let range = str.range(of:"xxx")!
let former: String = str[str.startIndex ..< range.lowerBound].description
let latter: String = str[range.upperBound ..< str.endIndex].description
// former: "aaa", latter: "bbbxxxccc"
こんな感じ.