機略戦記

Maneuver warfare

String#splitに引数を指定しないと空白文字でsplitされるというのを今日しった

される。

[4] pry(main)> "1\n2\n3\n4".split
=> ["1", "2", "3", "4"]

!?

[5] pry(main)> "1\n2\n3\n4".split(nil)
=> ["1", "2", "3", "4"]
[6] pry(main)> "1\n2\n3\n4".split(' ')
=> ["1", "2", "3", "4"]

instance method String#split

nilや' 'を与えた時もそのようになる。
便利…だけどなんでこうしたんだろう。
nilと' 'は、引数から挙動が想像できない気がする。

あと、\nを含まずに純粋にスペースでsplitしたい時はどうするだ。

pry(main)> "1\n2\n3 4".split(/ /)
=> ["1\n2\n3", "4"]

正規表現で指定したら出来た。