ちょっと微妙なsplit()の挙動
-- 2015/06/30 09:08
String#splitに引数を指定しないと空白文字でsplitされるというのを今日しった - 時系列のフリーランチ
・Ruby
なるほど?
ためしてみた。
・Ruby
・Python
・Perl
空白区切りに違和感があるもののPerlが一番自然かなあと思った。
・Ruby
[4] pry(main)> "1\n2\n3\n4".split
=> ["1", "2", "3", "4"]
なるほど?
ためしてみた。
・Ruby
irb(main):001:0> "1\n\n2\n3".split
=> ["1", "2", "3"]
irb(main):002:0> "1\n\n2\n3".split("")
=> ["1", "\n", "\n", "2", "\n", "3"]
irb(main):003:0> "1\n\n2\n3".split(nil)
=> ["1", "2", "3"]
irb(main):004:0> "1\n\n2\n3".split(" ")
=> ["1", "2", "3"]
・Python
>>> "1\n\n2\n3".split()
['1', '2', '3']
>>> "1\n\n2\n3".split("")
Traceback (most recent call last):
File "", line 1, in
ValueError: empty separator
>>> "1\n\n2\n3".split(None)
['1', '2', '3']
>>> "1\n\n2\n3".split(" ")
['1\n\n2\n3']
・Perl
DB<6> print join ',', map {"[$_]"} (split undef, "1\n\n2\n3")
[1],[
],[
],[2],[
],[3]
DB<7> print join ',', map {"[$_]"} (split "", "1\n\n2\n3")
[1],[
],[
],[2],[
],[3]
DB<8> print join ',', map {"[$_]"} (split " ", "1\n\n2\n3")
[1],[2],[3]
空白区切りに違和感があるもののPerlが一番自然かなあと思った。
