Swiftで文字列を特定の文字で分割したい時にsplitとcomponentsがありますがそれぞれ動作が違うので注意が必要です。
split
- 結果はSubstringの配列になる
- 区切り文字のみの部分は無くなる (注意!)
components
- 結果はStringの配列になる
- 区切り文字のみの部分は空文字になる
1 2 3 4 5 6 7 8 9 | let word = "3.14,1.142,2.64,,135" let split = word.split(separator: "," ) print( "\(split) : \(split.count)" ) // ["3.14", "1.142", "2.64", "135"] : 4 let components = word.components(separatedBy: "," ) print( "\(components) : \(components.count)" ) // ["3.14", "1.142", "2.64", "", "135"] : 5 |
Substringは元の文字列の部分を表現します(同じメモリーを参照する)
Stringとして扱いたい場合はString(_:)イニシャライザを使用します。
また、splitの場合は区切り文字のみの部分は取得できないのでcsvなどを処理する場合は注意が必要です。
0 件のコメント :
コメントを投稿