Tod*_*tyz 6 ruby ruby-on-rails
我不能为我的生活弄清楚这一点,即使它应该很简单.
我怎么能代替所有出现"(",并")"与一个字符串"\("和"\)"?
似乎没有任何作用:
"foo ( bar ) foo".gsub("(", "\(") # => "foo ( bar ) foo"
"foo ( bar ) foo".gsub("(", "\\(") # => "foo \\( bar ) foo"
Run Code Online (Sandbox Code Playgroud)
任何的想法?
您已经在第二次尝试中找到了解决方案,您只是感到困惑,因为字符串在交互式解释器中以转义形式显示。但实际上只有一个反斜杠而不是两个。尝试使用 puts 打印它,您会看到实际上只有一个反斜杠:
> "foo ( bar ) foo".gsub("(", "\\(")
=> "foo \\( bar ) foo"
> puts "foo ( bar ) foo".gsub("(", "\\(")
foo \( bar ) foo
Run Code Online (Sandbox Code Playgroud)
如果您需要进一步的说服力,请尝试取字符串的长度:
> "foo ( bar ) foo".length
=> 15
> "foo ( bar ) foo".gsub("(", "\\(").length
=> 16
Run Code Online (Sandbox Code Playgroud)
如果它添加了两个反斜杠,它将打印 17 而不是 16。
| 归档时间: |
|
| 查看次数: |
2624 次 |
| 最近记录: |