2

我想更改"@""\40"字符串。但我不能这样做。

a = "srikanth@in.com"
a.gsub("@", "\40")
# => "srikanth in.com"

\40随着空间而变化。知道如何实现吗?

4

3 回答 3

6

另一种解决方案

puts a.gsub("@") {"\\40"}
# => srikanth\40in.com
于 2013-09-20T09:41:40.957 回答
4

反斜杠在 的第二个参数中具有特殊含义gsub。它们指的是可能匹配的正则表达式组。我试图逃跑,但无法让它工作。但是,它是这样工作的:

s = "srikanth@in.com"
s['@'] = '\\40'
s # => "srikanth\\40in.com"
于 2013-09-20T09:40:02.943 回答
4

\\40不起作用,因为它指的是捕获组。从文档

如果replacement是a String,它将替换匹配的文本。它可能包含对格式的模式捕获组的反向引用\\d,其中d是组号...

您可以改用gsub's 哈希语法:

如果第二个参数是一个哈希,并且匹配的文本是它的一个键,那么对应的值就是替换字符串。

例子:

a.gsub('@', '@' => '\\40')
#=> "srikanth\\40in.com"
于 2013-09-20T10:25:58.253 回答