2012-04-17 8 views
1

Stringクラスのメソッドsplit状態に対するruby docsruby​​のstring.split( "、" -1)とstring.split( "、"、 - 4)の違いは何ですか?

負[限度である場合]、そこフィールドの数に制限が返されない、および末尾ヌルフィールドが抑制されていません。

string="1,,2,3,,,4,,5,,6" 

string.split(",", -1) 
string.split(",", -4) 
string.split(",", -1000000) 

彼らはすべて同じ値を返します:それはすることは可能であろう理由["1", "", "2", "3", "", "", "4", "", "5", "", "6"]

ただ不思議そう私の知る限り、以下のいずれかの間に差がない

このように異なる負の制限を割り当てます。

また、末尾のNULL値(空白など)を削除したい場合はどうなりますか?私はstring.strip.split(",",-1)を行うことができることを知っていますが、stripメソッドを使用せずにそれを行う方法はありますか?

答えて

4

あなたのテストと引用されたドキュメントの両方で、string.split(",", -1)string.split(",", -4)の間に違いはないようです。仕様には違いはなく、テストでは違いがないと言います。ハワイ。

しかしstring.strip.split(..)は、末尾のNULL値削除されませんのでご注意:

irb(main):003:0> string="1,,2,3,,,4,,5,,6,,," 
=> "1,,2,3,,,4,,5,,6,,," 
irb(main):004:0> string.split(",", -1) 
=> ["1", "", "2", "3", "", "", "4", "", "5", "", "6", "", "", ""] 
irb(main):005:0> string.strip.split(",", -1) 
=> ["1", "", "2", "3", "", "", "4", "", "5", "", "6", "", "", ""] 

をあなたはヌルを取り除くために別のメカニズムを選択する必要があります。

+0

ありがとう、私はnullsと空白の間で混乱していた。私は今それを得る、歓声 – stephenmurdoch

2

Rubyには同じことを行う構文がいくつかあります。ちょうどあなたのコードのコンベンションを-1を使用するようにしてください。

制限のない方法を尋ねていますが、nullフィールドの抑制はありますか?ドキュメントごとにlimitパラメータを省略できます。

+0

ありがとう、ちょうど限界を削除することについて考えていない。 – stephenmurdoch

関連する問題