如何使用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('@');
答案 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)