我试图用gsub
方法用'#'字符替换电子邮件中的所有字母数字字符,但Ruby在'@'字符前插入反斜杠。不正确的gsub替换
E.g:
"[email protected]".gsub(/[a-z0-9]/, "#")
回报"###\#@###.###"
代替"####@###.###"
。
我试图用gsub
方法用'#'字符替换电子邮件中的所有字母数字字符,但Ruby在'@'字符前插入反斜杠。不正确的gsub替换
E.g:
"[email protected]".gsub(/[a-z0-9]/, "#")
回报"###\#@###.###"
代替"####@###.###"
。
它返回"####@###.###"
如预期,尝试:
puts "[email protected]".gsub(/[a-z0-9]/, "#")
你在IRB /撬看到的是被解释为字符串插值预防#@
。
请参考下面@Stefan的非常有价值的评论。
更确切地说是['String#inspect']的结果(http://ruby-doc.org/core-2.3.1/String.html#method-i-inspect)。一个'#'后面跟着'$','@'或'{'将被转义。 – Stefan
tr
比gsub
快:
puts "[email protected]".tr('a-zA-Z0-9', '#')
# >> ###@###.###
您也可以使用'\ w'元字符:' “[email protected]” .gsub(/ \ W /, “#”)' – orde
@ orde'\ w'和'[a-z0-9]'是不同的字符集合。 – mudasobwa
请注意,反斜杠并未在'@'之前插入,而在'@'之前的'#'之前。 – Stefan