我想更改"@"
为"\40"
字符串。但我不能这样做。
a = "srikanth@in.com"
a.gsub("@", "\40")
# => "srikanth in.com"
它\40
随着空间而变化。知道如何实现吗?
另一种解决方案
puts a.gsub("@") {"\\40"}
# => srikanth\40in.com
反斜杠在 的第二个参数中具有特殊含义gsub
。它们指的是可能匹配的正则表达式组。我试图逃跑,但无法让它工作。但是,它是这样工作的:
s = "srikanth@in.com"
s['@'] = '\\40'
s # => "srikanth\\40in.com"
\\40
不起作用,因为它指的是捕获组。从文档:
如果replacement是a
String
,它将替换匹配的文本。它可能包含对格式的模式捕获组的反向引用\\d
,其中d是组号...
您可以改用gsub
's 哈希语法:
如果第二个参数是一个哈希,并且匹配的文本是它的一个键,那么对应的值就是替换字符串。
例子:
a.gsub('@', '@' => '\\40')
#=> "srikanth\\40in.com"