我試圖用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