1

在 Ruby 1.8.6(2007-09-24 补丁级别 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"它工作正常,但我strmatch函数中得到,所以我不能在括号内手动指定它。有没有办法改变'string'to"string"行为?

4

4 回答 4

0

简单的:

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

您可能还想看看这里

于 2010-02-19T09:16:03.103 回答
0

@瓦伦丁

-> 我的意思是来自 match 的 str 不是逐字记录的。因此出现了另一个(更简单的)解决方案,我不知道......

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

于 2010-02-20T08:01:25.403 回答
0

也许有更简单的方法,但是下面的代码有效

> str = '\&123'
> puts "abc".gsub("b", str.gsub(/\\&/o, '\\\\\&\2\1'))
> => a\&123c
于 2010-02-19T10:38:41.863 回答
0

只需删除反斜杠:

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

没有必要在单引号字符串文字中使用反斜杠来保护与号(与双引号不同)。

于 2010-02-19T10:14:36.183 回答