【问题标题】:Hide part of email domain隐藏部分电子邮件域
【发布时间】:2016-09-30 00:58:11
【问题描述】:

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

示例:

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

我得到了这个结果:

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

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

使用这种方法我也有一个问题,如果域少于 4 个字母,我仍然会在域中放置 4 个“#”。但我最关心的是'#@'的交界处。

【问题讨论】:

    标签: ruby regex string gsub


    【解决方案1】:

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

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

    【讨论】:

      【解决方案2】:

      如果@,作为@example的一部分,没有被转义并且前面有'#',Ruby会插入实例变量@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"
      

      【讨论】:

        猜你喜欢
        • 2018-03-24
        • 1970-01-01
        • 2016-01-21
        • 1970-01-01
        • 1970-01-01
        • 2020-08-18
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多