3

Ruby では、2 つのバックスラッシュを 1 つのバックスラッシュに置き換えることができないようです。バックスラッシュを別のバックスラッシュでエスケープするだけだと思いました。

1.9.3-p194 :001 > line = "this\\is\\a\\test"
  => "this\\is\\a\\test"
1.9.3-p194 :002 > line.gsub("\\\\", "\\")  # Nothing
  => "this\\is\\a\\test"

それはうまくいかなかったので、少なくとも代わりになる一致を見つけようとしました。

1.9.3-p194 :003 > line.gsub("\\", "_")  # This works for replacing \\
  => "this_is_a_test"
1.9.3-p194 :004 > line.gsub("\\", "\\")  # Nothing
  => "this\\is\\a\\test" 

Rubyでこれを行う簡単な方法はまだ見つかりません。

4

3 に答える 3

5

この線で...

line = "this\\is\\a\\test"

...実際には、次のような文字列を作成します。

this\is\a\test

...それぞれ\\が単一のスラッシュとして認識されるためです。もちろん、文字列には二重スラッシュがないため、二重スラッシュを置き換えることはできません。

line.gsub("\\", "_")行はまさにそれを行っています: 文字列内のすべての単一のスラッシュを_シンボルに置き換えます.

line.gsub("\\", "\\")変装したノーオペレーションです。

于 2012-09-05T16:26:22.213 に答える
-2

これは、二重スラッシュを単一スラッシュに置き換える場合に機能するはずです。

str.gsub(/\\\\/,"\\/")
于 2016-07-13T09:51:23.400 に答える