2つあるけど、どっちを使うか。
どっちから使っていくか。
"1 2 3".split(separator: " ")
// ["1", "2", "3"]
"1 2 3".components(separatedBy: " ")
// ["1", "2", "3"]
split のほうが短いし、分かりやすくね?
■ 最初と最後の区切り文字
" 1 2 3 ".split(separator: " ")
// ["1", "2", "3"]
" 1 2 3 ".components(separatedBy: " ")
// ["", "1", "2", "3", ""]
■ 連続する区切り文字
"1 2 3".split(separator: " ")
// ["1", "2", "3"]
"1 2 3".components(separatedBy: " ")
// ["1", "", "2", "", "3"]
■ 割れない場合
"123".split(separator: " ")
// ["123"]
"123".components(separatedBy: " ")
// ["123"]
"1 2 3".split(separator: "23")
// ["1 2 3"]
"1 2 3".components(separatedBy: "23")
// ["1 2 3"]
"1 2 3".split(separator: " ")
// ["1 2 3"]
"1 2 3".components(separatedBy: " ")
// ["1 2 3"]
■ 空文字で割る
"123".split(separator: "")
// ["1", "2", "3"]
"123".components(separatedBy: "")
// ["123"]
"1 2 3".split(separator: "")
// ["1", " ", "2", " ", "3"]
"1 2 3".components(separatedBy: "")
// ["1 2 3"]
" 1 2 3 ".split(separator: "")
// [" ", "1", " ", "2", " ", "3", " "]
" 1 2 3 ".components(separatedBy: "")
// [" 1 2 3 "]
" 1 2 3 ".split(separator: "")
// [" ", " ", "1", " ", " ", "2", " ", " ", "3", " ", " "]
" 1 2 3 ".components(separatedBy: "")
// [" 1 2 3 "]
■ 空文字を分割
"".split(separator: " ")
// []
"".components(separatedBy: " ")
// [""]
"".split(separator: "23")
// []
"".components(separatedBy: "23")
// [""]
"".split(separator: " ")
// []
"".components(separatedBy: " ")
// [""]
"".split(separator: "")
// []
"".components(separatedBy: "")
// [""]
■ それでも直感的に分かりづらいような
"123".split(separator: "123")
// []
"123".components(separatedBy: "123")
// ["", ""]
"123".split(separator: "23")
// ["1"]
"123".components(separatedBy: "23")
// ["1", ""]
" 1 2 3 ".split(separator: " ")
// ["1", "2", "3"]
" 1 2 3 ".components(separatedBy: " ")
// ["", "", "1", "", "2", "", "3", "", ""]
■ まとめ
それぞれ他にも引数はいろいろあるようですが、
components(separatedBy:)
のほうがはっきり明快で分かりやすいように思えますが。
" 1 2 3 "
.split(separator: " ") // ["1", "2", "3"]
.joined(separator: " ") // "1 2 3"
" 1 2 3 "
.components(separatedBy: " ") // ["", "", "1", "", "2", "", "3", "", ""]
.joined(separator: " ") // " 1 2 3 "
将来的にどうなるのか。
👉 【Swift】なんとなくメソッド名が長い気がする
👉 swift - component(separatedBy:) versus .split(separator: ) - Stack Overflow