コード'////'.split('/')
の結果は[]
となります。私はそれが['', '', '', '', '']
であると予想していましたが。これがルビーの機能であれば、どうしてそんなにデザインされていますか?なぜ '////'.split('/')が[]を生成するのですか?
答えて
このデザインは、後続の区切り文字で文字列を解析するのに便利です。たとえば、
'1␣2␣3␣␣'.split('␣')
は['1', '2', '3', '', '']
ではなく['1', '2', '3']
となります。
この機能はワークフローを簡略化するためのものです。
しかし、私はこのメソッドの純度を壊すので、この機能が嫌いです。上記の効果を達成するためには、'1␣2␣3␣␣'
とsplit('␣')
の間に特別なrstrip('␣')
が必要です。
'( '␣')'がかわいいです。 –
デリミタの文字列を区切り文字で分割することはできません。
あなたはヌルフィールドが抑制され、末尾、limitパラメータが省略されている場合
'////'.split('/',-1)
=>
["", "", "", "", ""]
この動作を実現するために機能を分割する2番目のパラメータとしての限界を渡す必要があります。 limitが正の数である場合、最大で数のフィールドが返されます(limitが1の場合、文字列全体が配列内の唯一のエントリとして返されます)。負の場合、返されるフィールドの数に制限はなく、末尾のnullフィールドは抑制されません
* + 1 * ..私は... :)しかし、あなたは[doc](http://www.ruby-doc.org/core-2.0.0/String.html#methodi- split)like - ** limitパラメータを省略すると、末尾のnullフィールドは抑制されます**。 limitが正の数である場合、最大で数のフィールドが返されます(limitが1の場合、文字列全体が配列内の唯一のエントリとして返されます)。 **負の場合、返されるフィールドの数に制限はなく、末尾のnullフィールドは抑制されません。** –
ありがとうございます。本当に便利なコメント。 – SergeyKutsko
split
の動作の調査は、最適化の結果であることを示しています。
'////'.split('/')
=> []
'//a//'.split('/')
=> ["", "", "a"]
- 1. クエリプランがインデックススキャンを生成するのはなぜですか?
- 2. コードコントラクトがMyAssembly.Contracts.pdbファイルを生成するのはなぜですか?
- 3. GradientDescentOptimizerでNaNが生成されるのはなぜですか?
- 4. Xcode 3.2.1 - なぜコアデータが生成され、ビルドエラーが発生するのですか?
- 5. php-url split upは空の0のインデックスを生成します
- 6. なぜサーバーサイドコントロールのIDが生成されないのですか?
- 7. Javascriptでは、なぜsplitで配列を定義するのですか?
- 8. スカフォールドが生成されないのはなぜですか?
- 9. 私のコードが余分なクエリを生成するのはなぜですか?
- 10. .splitが期待どおりに動作しないのはなぜですか?
- 11. なぜboost :: is_any_ofをboost :: splitを使用する必要がありますか?
- 12. Apache Camel splitはThreadPoolで並列実行されますが、なぜですか?
- 13. Grailsがデフォルトでnot-nullカラムを生成するのはなぜですか?
- 14. カスタムコンポーネントがIDEでAVを生成するのはなぜですか?
- 15. C#Web生成が失敗したのはなぜですか?
- 16. このコードがリンクを生成するのはなぜですか?
- 17. WCFが別のプロキシを生成するのはなぜですか?
- 18. 私のCマトリックスが50x50を生成するのはなぜですか?
- 19. 私のevenOddコードが出力を生成するのはなぜですか?
- 20. コンパイラがこのコードを生成するのはなぜですか?
- 21. コンパイラがプッシュ/ポップ命令のペアを生成するのはなぜですか?
- 22. なぜPerlの連結配列が数値を生成するのですか?
- 23. EFがsimleクエリのサブクエリを生成するのはなぜですか?
- 24. 関数が負の数を生成するのはなぜですか?
- 25. ノードが複数のスレッドを生成するのはなぜですか?
- 26. プロシージャがnullの結果を生成するのはなぜですか?
- 27. なぜ、マージプル要求が2つのコミットを生成するのですか?
- 28. 部門(?)がこの番号を生成するのはなぜですか?
- 29. JsonResultが500の内部サーバーエラーを生成するのはなぜですか?
- 30. メイクファイルが現在のディレクトリにオブジェクトファイルを生成するのはなぜですか?
+1良い質問をしています: –
質問は面白いですが、尋ねられたかもしれない最高の形ではありません。あなたの質問は、この効果のために4つの連続するスラッシュが重要であることを読者に誤解させるかもしれませんが、そうではありません。短いスラッシュシーケンスで同じ結果が得られます。 – sawa