split で末尾の空要素も欲しいとき

Ruby の String#split は末尾の空の要素を取り除く。

"1,2,3".split(/,/)   # => ["1", "2", "3"]
"1,,3".split(/,/)    # => ["1", "", "3"]
"1,,".split(/,/)     # => ["1"]  # 要素は 3 個のはずなのに

どうせ空なんだし、どうでもいいよと思っていたけど、CSV ファイルの最後の項目だけ抜き出そうとしてハマッた。

これを防ぐ方法をどこかで見たはず ...... 思い出した。

第24回 Ruby/Rails勉強会@関西に参加しています - 趣味的にっき

znz さんのコメントにその答えが。

"1,,".split(/,/)        # => ["1"]
"1,,".split(/,/, -1)    # => ["1", "", ""]

作業を終えてから「るりま」を見たら、ちゃんと書いてあった。

「るりま」すばらしい。