string.sub
は、最初のインスタンスのみを置き換えるようです。すべてのパターンを置き換えることができるオプションまたは別の方法がありますか?あなたはperlのような正規表現の内部でそれを行うことができますか?ルビーのパターンのすべてのインスタンスをどのように置き換えることができますか?
(私はR /何とか/何とか/のようなものだと思います)
...と1 WHY地球上で私に言うことができる誰にでもstring.sub
はちょうど最初のマッチを置き換えるのでしょうか?
string.sub
は、最初のインスタンスのみを置き換えるようです。すべてのパターンを置き換えることができるオプションまたは別の方法がありますか?あなたはperlのような正規表現の内部でそれを行うことができますか?ルビーのパターンのすべてのインスタンスをどのように置き換えることができますか?
(私はR /何とか/何とか/のようなものだと思います)
...と1 WHY地球上で私に言うことができる誰にでもstring.sub
はちょうど最初のマッチを置き換えるのでしょうか?
String.gsubトリックを行う必要があります。
第二引数に代入パターン の すべて出現とSTRのコピーを返します
gsub(pattern, replacement) → new_str
:ドキュメントを引用
。パターンは通常 正規表現です。文字列として指定された場合、それに含まれる正規表現のメタキャラクタは、 がそのまま解釈されます。
\\d
は数字の代わりにd
の後に バックラッシュと一致します。
w00t。ありがとう。あなたは、サブがデフォルトとしてそれを行い、最初のN個のオカレンスを置き換えるためのintパラメータを持っていると思います! – DJTripleThreat
DJ:そうではありません。最初の試合を交換したい場合は、** SUB ** stituteを選択してください。** G ** lobal ** SUB ** stituteをお選びください。 –
さらに詳しくは、[manual page](http://www.ruby-doc.org/core-2.1.1/String.html#method-i-gsub)を参照してください。 –
sub
だけでパターンの最初のマッチを置き換えるが、私はドキュメントはそんなに良く(コマンドライン上ri String#sub
から)それをしないと考える理由を私が説明できる:
str.sub(pattern, replacement) => new_str
str.sub(pattern) {|match| block } => new_str
Returns a copy of _str_ with the _first_ occurrence of _pattern_
replaced with either _replacement_ or the value of the block.
うわー、私は何年も前からルビーとレールを使ってきた。今日私はあなたの投稿のために何か#メソッドをタイプした最初の時でした。私は機能がそこにあったことを知らなかった!用語をグーグルで見つけて、そのような方法で文書を見つけてください。 –
同じ理由であることPerlは置換をグローバルにするために 'g'修飾子が必要です。すべてを置き換えるのは、しばしばあなたが望むものですが、常にそうとは限りません。 – Telemachus