显示已加星标的电子邮件

时间:2017-12-13 10:13:07

标签: javascript typescript

如何使用javascript将电子邮件显示为已加星标?假设我有一封电子邮件 abcdefg@stackoverflow.com ,我将其显示为 a ***** g@stackoverflow.com 。有人可以帮助我实现这个目标吗?

我可以这样做,但我想要一个更好的方法来实现这个

email = email.split('@');
username = email[0];
var str = '',i;
for(i=0;i<username.length;i++){
    if(i!=0) {
        str+= '*'
     }
     else
        str+=username[i]
};
email[0] = str;
var result = email.join('@');

2 个答案:

答案 0 :(得分:2)

如果您正在寻求简洁:

ES6:

email.replace(/^(.)(.*)(.@.*)/, (...a) => a[1] + a[2].replace(/./g, '*') + a[3]);

ES5:

email.replace(/^(.)(.*)(.@.*)/,
    function(m, a1, a2, a3) { return a1 + a2.replace(/./g, '*') + a3 }
);

给定电子邮件abcdef@example.com,正则表达式将字符串拆分为3个部分:['a', 'bcde', 'f@example.com']。然后回调将它重新组合在一起,用星号替换第二个块的所有字符。

答案 1 :(得分:1)

更短更好?更具可读性?这是我能想到的最短的,不太可读:

let email = "abcdefg@stackoverflow.com" 
let at = email.indexOf("@")
return email[0] 
       + email.substring(1, at).replace(/./g, "*") 
       + email.substring(at, email.length)