gpt4 book ai didi

ruby - 如何将 "email@domain.com"转换为 "em***@domain.com"?

转载 作者:塔克拉玛干 更新时间:2023-11-03 04:52:24 25 4
gpt4 key购买 nike

我想转换仅显示前两个字符的电子邮件并将其余字符替换为“*”并保持“@domain.com”不变,我该怎么做

我已经有了按预期工作的代码,但我希望有一种简化的方法,我不知道是否有办法使用 gsub 方法并通过一些范围,任何帮助将不胜感激

email = 'email@domain.com'
splitted_email = email.partition('@')
splitted_email.first[2...email.size-2]
splitted_email[0] = splitted_email.first[0...2] + ('*' *(splitted_email.first.size-2))
splitted_email.join

=> em***@domain.com

最佳答案

您可以为此使用正则表达式。一个或多或少可读的是

.gsub(/(?<=\A[^@]{2})[^@]*/) { |m| "*" * m.length }

它所做的就是匹配

  • (?<=\A[^@]{2}) - 与紧接其后的位置相匹配的正后视:
    • \A - 字符串开始
    • [^@]{2} - 除 @ 以外的两个字符
  • [^@]+ - 除 @ 以外的任何 1+ 个字符.

替换是我们可以操纵匹配的 block :* char重复的次数与匹配值的长度相同。

参见 Ruby demo :

email = 'email@domain.com'
p email.gsub(/(?<=\A[^@]{2})[^@]+/) { |m| "*" * m.length }
# => "em***@domain.com"

关于ruby - 如何将 "email@domain.com"转换为 "em***@domain.com"?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55520421/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com