我想在字符串中将"@"
更改为"\40"
。但我无法这样做。
a = "srikanth@in.com"
a.gsub("@", "\40")
# => "srikanth in.com"
它正在用空格改变\40
。知道如何实现这个吗?
答案 0 :(得分:6)
另一种解决方案
puts a.gsub("@") {"\\40"}
# => srikanth\40in.com
答案 1 :(得分:4)
反斜杠在gsub
的第二个参数中具有特殊含义。它们指的是可能匹配的正则表达式组。我尝试逃避,但无法让它工作。它的工作原理如下:
s = "srikanth@in.com"
s['@'] = '\\40'
s # => "srikanth\\40in.com"
答案 2 :(得分:4)
\\40
无效,因为它指的是捕获组。来自docs:
如果替换是
String
,它将替换匹配的 文本。它可能包含对模式捕获组的反向引用 形式\\d
,其中 d 是一个组号...
您可以改为使用gsub
的哈希语法:
如果第二个参数是Hash,匹配的文本是其中一个键,则相应的值是替换字符串。
示例:
a.gsub('@', '@' => '\\40')
#=> "srikanth\\40in.com"