【问题标题】:Ruby replace double backslash with single backslashRuby 用单反斜杠替换双反斜杠
【发布时间】:2012-09-05 16:21:12
【问题描述】:

我似乎无法在 Ruby 中用单个反斜杠替换双反斜杠。我想我会用另一个反斜杠来逃避反斜杠。

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 中执行此操作的简单方法。

【问题讨论】:

  • 不确定你的字符串到底是什么,当我得到一个有\n并被解释为\\n的字符串时,我遇到了这个问题,如果是这样,你应该使用@987654325 @

标签: ruby replace backslash


【解决方案1】:

有了这条线……

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

...您实际上创建了一个如下所示的字符串:

this\is\a\test

... 因为每个\\ 都将被识别为一个斜杠。当然,您将无法替换双斜杠,因为您的字符串中没有。

line.gsub("\\", "_") 行就是这样做的:用 _ 符号替换字符串中的所有 single 斜杠。

line.gsub("\\", "\\") 只是变相的无操作。

【讨论】:

  • 我们如何将line = "this\\is\\a\\test" 更改为line = "this\is\a\test" gsub 在这种情况下不起作用
【解决方案2】:

我认为这可以完成工作:str.gsub('\\',"\/")

【讨论】:

    【解决方案3】:

    这应该适用于用单斜杠替换双斜杠:

    str.gsub(/\\\\/,"\\/")
    

    【讨论】:

    • 很遗憾没有:(
    猜你喜欢
    • 2012-06-16
    • 1970-01-01
    • 1970-01-01
    • 2013-06-24
    • 1970-01-01
    • 2013-04-15
    • 1970-01-01
    • 2017-07-25
    • 2011-09-06
    相关资源
    最近更新 更多