我试图在用户尝试重置密码时隐藏我的视图中域名部分的电子邮件,我使用的是gsub,但我遇到了2个字符联合的问题。隐藏电子邮件域名的一部分
例如:
我得到了这样的结果:
"my###\#@example.com"
我不想,在##的中间\,我进入控制台,如果我只是写'#@'
我得到了"\#@"
,我不知道如何逃避这些角色。
这种方法我也有问题,如果域少于4个字母,我仍然把4'#'在域中。但我最关心的是'#@'的交汇点。
我试图在用户尝试重置密码时隐藏我的视图中域名部分的电子邮件,我使用的是gsub,但我遇到了2个字符联合的问题。隐藏电子邮件域名的一部分
例如:
我得到了这样的结果:
"my###\#@example.com"
我不想,在##的中间\,我进入控制台,如果我只是写'#@'
我得到了"\#@"
,我不知道如何逃避这些角色。
这种方法我也有问题,如果域少于4个字母,我仍然把4'#'在域中。但我最关心的是'#@'的交汇点。
你很好;因为#@可以引用全局变量的插值(参见Why does string interpolation work in Ruby when there are no curly braces?),因此irb或pry将为您避开#以消除其漂亮打印中的歧义。反斜杠是不实际的字符串,您可以通过打印出来明确地验证:
print("[email protected]".gsub(/.{0,4}@/,'####@'))
如果@
,为@example
一部分,不逃脱,被'#'
之前,红宝石插入实例变量的值@example
。
假设:
@example = 'hi'
"my####@example.com" #=> "my###.com"
如果没有实例变量@example
,引用它返回nil
,将其转化为空字符串。
"my####@example.com" #=> "my###.com"
这也可以使用全局变量来完成:
$example = 'ho'
"my####$example.com" #=> "my###ho.com"
,并用类变量:
@@example = 'hum'
"my####@@example.com" #=> "my###hum.com"
感谢您的回答 –