1

Stringクラスのメソッド状態に関するrubyのドキュメント:split

[limitが]負の場合、返されるフィールドの数に制限はなく、末尾のnullフィールドは抑制されません。

私が知る限り、次のいずれにも違いはありません。

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

2 に答える 2

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", "", "", ""]

null を削除するには、別のメカニズムを選択する必要があります。

于 2012-04-17T00:42:32.467 に答える
2

Ruby には、構文に至るまで、同じことを行う方法が複数あることがよくあります。コードで使用する規則を作成するだけ-1です。

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

于 2012-04-17T00:41:44.773 に答える