简单的问题,但我找不到简单的答案
我有一个字符串
str = 'a&b'
我需要将 & 替换为 \&
str
>>> a\&b
在php中我可以这样做
str_replace('&', '\\&', $str); \\ >>> a\&b
但是在红宝石中这不起作用
str.gsub('&', '\\&')
>>> a&b
简单的问题,但我找不到简单的答案
我有一个字符串
str = 'a&b'
我需要将 & 替换为 \&
str
>>> a\&b
在php中我可以这样做
str_replace('&', '\\&', $str); \\ >>> a\&b
但是在红宝石中这不起作用
str.gsub('&', '\\&')
>>> a&b
2.0.0-p0 :018 > "a&b".gsub('&', '\\\&')
=> "a\\&b"
2.0.0-p0 :019 > _.chars.to_a
=> ["a", "\\", "&", "b"]
2.0.0-p0 :023 > puts "a&b".gsub('&', '\\\&')
a\&b
使用块的解决方案:
> puts 'a&b'.gsub('&') { '\&' }
a\&b
在块形式\
中,不解释带有前缀的反向引用,就像 的替换参数中的情况一样gsub
。
在块形式中,有 $n、$&... 变量可用。
在您使用的 gsub 形式中,双反斜杠必须用另一个反斜杠转义。