如何使用ruby字符串中的单个反斜杠替换字符串中的双反斜杠

时间:2012-07-14 10:09:53

标签: ruby string

如何使用单个反斜杠替换字符串中的双反斜杠?

我试图用"\\a\\b\\c".gsub!("\\\\","\\")来做,但这不起作用。

2 个答案:

答案 0 :(得分:0)

狂野猜测,因为我对ruby一无所知:

可能是反斜杠在字符串中有特殊含义吗?尝试一下这个:

"\a\b\c".gsub!("\\\\","\\")

答案 1 :(得分:0)

in ruby strings the backslash is the special first char to start an "escape sequence"因此:

\\ - means single backslash

为了更好地理解这个例子可能有所帮助:

  >> s = "\\ha"
  => "\\ha"
  >> s.split(//)
  => ["\\", "h", "a"]

你可以看到你只有3个字符,第一个是单个反斜杠,由转义序列\\

表示

现在我们用单反斜杠替换双反斜杠

   >> s.gsub!("\\","\\\\\\")
   => "\\\\ha"
   >> s.split(//)
   => ["\\", "\\", "h", "a"]

我们的字符串现在是第一个4个字符,第二个是反斜杠。

现在我们通过用一个反斜杠

替换双反斜杠来回到原始字符串
   >> s.gsub!("\\\\","\\")
   => "\\ha" 
   >> s.split(//)
   => ["\\", "h", "a"]

使用以下实施例测试上述实施例:ruby 1.8.7,irb 0.9.5