隐藏部分电子邮件域

Hide part of email domain

当用户尝试重置密码时,我试图在我的视图中隐藏电子邮件的域部分,我使用的是 gsub,但我遇到了 2 个字符的并集问题。

示例:

"myemail@example.com".gsub(/.{0,4}@/,'####@')

我得到了这个结果:

"my###\#@example.com"

我不想在 ## 中间那个 \,我进入了控制台,如果我只写 '#@' 我得到了 "\#@" ,我不知道如何转义这些字符。

用这个方法我也有问题,如果域少于 4 个字母我仍然放 4 '#'s in the domain. But my primary concern is about the junction of '#@'。

你很好; # 由 irb 或 pry 为您转义以在其漂亮的打印中消除歧义,因为 #@ 可以引用全局变量的插值(请参阅 Why does string interpolation work in Ruby when there are no curly braces?)。反斜杠实际上不在字符串中,您可以通过显式打印来验证:

print("myemail@example.com".gsub(/.{0,4}@/,'####@'))

如果@作为@example的一部分,没有转义,前面有'#',Ruby插入实例变量的值@example.

假设:

@example = 'hi'
"my####@example.com" #=> "my###.com"

如果没有实例变量@example,引用它returns nil,它被转换为一个空字符串。

"my####@example.com" #=> "my###.com"

这也可以用全局变量来完成:

$example = 'ho'
"my####$example.com" #=> "my###ho.com"

并带有 class 个变量:

@@example = 'hum'
"my####@@example.com" #=> "my###hum.com"