Swiftで文字列を切り出す方法はいくつか方法があります。
ここでは、例として5文字目まで切り出す場合を考えます。
(Swift 5.2で検証しています)
Rangeを使う
1 2 3 4 5 6 7 8 9 10 | let str = "abcdefg" // Rangeで切り出す場合 let ranged = str[str.startIndex..<str.index(str.startIndex, offsetBy: 5)] print( "\(ranged), \(type(of: ranged))" ) // abcde, Substring // Rangeで切り出す場合簡略版 // 先頭からは..で始めることができる let ranged2 = str[..<str.index(str.startIndex, offsetBy: 5)] print( "\(ranged2), \(type(of: ranged2))" ) // abcde, Substring |
真っ先に思いつくのはRangeで切り出す場合です。
Swiftは文字を切り出す場合のRangeの書き方がややこしいためゴチャゴチャして見えます。
prefixやdropLastなどのメソッドを使う
1 2 3 4 5 6 7 8 9 | let str = "abcdefg" // prefixで取得する場合 let prefix = str.prefix(5) print( "\(prefix), \(type(of: prefix))" ) // abcde, Substring // 文字列の後ろの余計な部分を削る場合 let trimed = str.dropLast(str.count - 5) print( "\(trimed), \(type(of: trimed))" ) // abcde, Substring |
切り出す位置や長さが決まっている場合は、prefixやdropLastなどを使って切り出した方がコードはすっきりしそうです。
どの場合も注意が必要なのは、切り出した文字列はSubstring型になる点です。
最終的にStringが欲しい場合はString(xxx)の形でString型に戻す必要があります。
0 件のコメント :
コメントを投稿