文字を分割したい事は多々あります。Swiftではcomponents(separatedBy:)、あるいはsplitを使います。
Xcode 13.4.1
String 文字列分割
Swiftでの文字分割に使えるものが主に3つです。
components(separatedBy: )
components(separatedBy: ” “)で文字列を” “スペースで分割した場合です
import Foundation が必要
「book note pen bag」という文字列から空白で分割すると
1 2 3 4 5 6 7 8 9 10 |
import UIKit import Foundation ... let str:String = "book note pen bag" let arr:[String] = str.components(separatedBy: " ") print(arr[0]) // "book" print(arr[1]) // "note" print(arr[2]) // "pen" print(arr[3]) // "bag" |
よくあるケースで年月日が下のように2017/10/9のように”/”で区切られていて、個別に取り出したい時に使います。
1 2 3 4 5 6 7 8 9 10 11 |
import UIKit import Foundation // ... let str:String = "2017/10/9" // 年月日を / で分割 let arr:[String] = str.components(separatedBy: "/") print(arr[0]) // "2017" print(arr[1]) // "10" print(arr[2]) // "9" |
このあとは文字を数字に変換して使い回す事もあるでしょうか。Int, String, Double 変換
改行コード “\n” にも使えます
1 2 3 4 5 6 7 8 9 |
import UIKit import Foundation //... let str:String = "Apple\nGoogle\nAmazon" let arr:[String] = str.components(separatedBy: "\n") print(arr[0]) // "Apple" print(arr[1]) // "Google" print(arr[2]) // "Amazon" |
components(separatedBy: CharacterSet.)
CharacterSet.を使うと、絵文字でもできます。
1 2 3 4 5 6 7 8 9 10 11 12 |
import UIKit import Foundation // ... let charSet = CharacterSet(charactersIn: "🐱") let animals = "猫🐱魚🐟"; // 猫ちゃんで分割せよ! let arr4 = animals.components(separatedBy: charSet) // へい、わかりゃした。にゃん print (arr4[0]) // "猫" print (arr4[1]) // "魚🐟" |
split
以前はcharactor.split でしたが非推奨になりましたのでsplitそのまま使います。
1 2 3 4 5 6 7 8 |
let str1 = "分割の方法が、SwiftXから変わった。よくある事です、はい。" // 句読点で分割 let strArray = str1.split(separator: "、") print(strArray[0]) // "分割の方法が" print(strArray[1]) // "SwiftXから変わった。よくある事です" print(strArray[2]) // "はい。" |
スペースで分割すると
1 2 3 4 5 6 |
let flag = "🇺🇸 🇯🇵 🇫🇷" let flags = flag.split(separator: " ") print(flags[0]) // "🇺🇸" print(flags[1]) // "🇯🇵" print(flags[2]) // "🇫🇷" |
関連ページ:
References:
– iOS Developer Librarry
– Split a String into an array
– Swift: Split a String into an array