[swift] 文字列操作 (splitとcomponents)の違い

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 件のコメント :

コメントを投稿