如何在单引号字符串中转义斜杠?

时间:2010-02-19 09:06:35

标签: ruby regex gsub

ruby​​ 1.8.6(2007-09-24 patchlevel 111)

str = '\&123'
puts "abc".gsub("b", str) => ab123c
puts "abc".gsub("b", "#{str}") => ab123c
puts "abc".gsub("b", str.to_s) => ab123c
puts "abc".gsub("b", '\&123') => ab123c
puts "abc".gsub("b", "\&123") => a&123c <--- This I want to achieve using temporary variable

如果我将str = '\&123'更改为str = "\&123",它可以正常工作,但我从str函数中获取match,因此我无法在parantheses中手动指定它....是有没有办法将字符串的'string'更改为"string"行为?

4 个答案:

答案 0 :(得分:0)

简单:

str = '\&123' <-- the result of your match function
str = str.gsub(/\\/, '\\\\')

您可能还想看看here

答案 1 :(得分:0)

只需删除反斜杠:

puts "abc".gsub("b", '&123')

不需要在单引号内用反斜杠保护&符号(与双引号不同)。

答案 2 :(得分:0)

也许有一种更简单的方法,但下面的代码可以使用

> str = '\&123'
> puts "abc".gsub("b", str.gsub(/\\&/o, '\\\\\&\2\1'))
> => a\&123c

答案 3 :(得分:0)

@Valentin

- &GT;我的意思是来自比赛的str不是逐字逐句的。因此出现了另一种(更简单的)解决方案,我不知道......

"abc".gsub("b") { str } -> a\&123c