[Swift] 文字列を切り出す方法

Swiftで文字列を切り出す方法はいくつか方法があります。 ここでは、例として5文字目まで切り出す場合を考えます。 (Swift 5.2で検証しています) ## Rangeを使う ```objc `gutter:true; 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などのメソッドを使う ```objc `gutter:true; 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 件のコメント :

コメントを投稿