カンマの数はどちらも同じなのです。
t = "1,2,3,," #3
#t = "1,2,3,x," #4
puts t.split(/,/).size
質問からは結果をどうしたいか? が書いていないので想像で回答します。
両方共同じ数で分割したいのであればこれでどうでしょうか?
irb(main):016:0> "1,2,3,,".scan(/.?,/).map{|v|v.delete(",")} => ["1", "2", "3", ""] irb(main):017:0> "1,2,3,4,".scan(/.?,/).map{|v|v.delete(",")} => ["1", "2", "3", "4"]
ダミー
単純に、split したときに、空があったら、空の値を持つ配列をつくって欲しいだけなんですが。。。。
>単純に、split したときに、空があったら、空の値を持つ配列をつくって欲しいだけなんですが。。。。
1番の回答者JULYさんの回答が正しいと思いますよ。
split([sep[, limit]])
(中略)
limit は以下のいずれかです。
* 省略 or 0: 配列末尾の空文字列は取り除かれる。
* limit > 0: 最大 limit 個のフィールドに分割する。
* limit < 0: 無限に大きい limit が指定されたかのように分割する。
例: limit の例
# limit 省略時は、0 を指定したのと同じ。配列末尾の空文字列は取り除かれる
p "a,b,c,,,".split(/,/) # => ["a", "b", "c"]
p "a,b,c,,,".split(/,/, 0) # => ["a", "b", "c"]
# limit が 最大のフィールド数に満たない場合は最後の要素に残りすべてが入る
p "a,b,c,,,".split(/,/, 3) # => ["a", "b", "c,,,"]
# limit が -1 や最大のフィールド数以上の場合は最大のフィールド数を指定したのと同じ
p "a,b,c,,,".split(/,/, 6) # => ["a", "b", "c", "", "", ""]
p "a,b,c,,,".split(/,/, -1) # => ["a", "b", "c", "", "", ""]
p "a,b,c,,,".split(/,/, 100) # => ["a", "b", "c", "", "", ""]
なるほど、そういった仕様なんですね。
こんなめんどうなことをしないといけないのでしょうか?