😎
Ruby の String#split の第二引数について
Ruby の String#split
は『任意の文字を区切って配列に変換する』という処理になります。
str = "homu,mami,mado,saya,an"
# , 区切りで分割して配列に変換する
pp str.split(",")
# => ["homu", "mami", "mado", "saya", "an"]
第二引数で分割する配列のサイズを指定できる
String#split
では第二引数で『分割するときの配列のサイズ』を指定する事ができます。
str = "homu,mami,mado,saya,an"
# 配列のサイズが 2 になるように調整して分割する
pp str.split(",", 2)
# => ["homu", "mami,mado,saya,an"]
# 配列のサイズが 4 になるように調整して分割する
pp str.split(",", 4)
# => ["homu", "mami", "mado", "saya,an"]
0
や -1
を渡した場合の違い
第二引数に 第二引数に 0
や -1
を渡した場合には『分割するサイズの制限』はなくなります。
str = "homu,mami,mado,saya,an"
pp str.split(",", 0)
# => ["homu", "mami", "mado", "saya", "an"]
pp str.split(",", -1)
# => ["homu", "mami", "mado", "saya", "an"]
ただし、 0
を渡した場合には『配列末尾の空文字列を取り除く』という作用があります。
str = "homu,mami,mado,"
# , が終端の場合末尾に空となる文字列がある
pp str.split(",", -1)
# => ["homu", "mami", "mado", ""]
# 0 を渡すとこの空の文字列が取り除かれる
pp str.split(",", 0)
# => ["homu", "mami", "mado"]
# デフォルトでは 0 を渡したときと同じ挙動になる
pp str.split(",")
# => ["homu", "mami", "mado"]
こんな感じで意図的に空の文字列を残したい場合は -1
を渡す必要があります。
Discussion