我必须替换****上的所有姓名字母。 示例:
Jeniffer-> J **** r
我尝试$(this).text( $(this).text().replace(/([^\w])\//g, "*"))
如果名字是罗恩-> R **** n
答案 0 :(得分:4)
您可以为此使用正则表达式,方法是捕获捕获组中的第一个和最后一个字母,然后忽略它们之间的所有字母,然后在替换中使用捕获组:
var updated = name.replace(/^(.).*(.)$/, "$1****$2");
实时示例:
function obscure(name) {
return name.replace(/^(.).*(.)$/, "$1****$2");
}
function test(name) {
console.log(name, "=>", obscure(name));
}
test("Ron");
test("Jeniffer");
但是如果没有它,可能会更容易
var updated = name[0] + "****" + name[name.length - 1];
实时示例:
function obscure(name) {
return name[0] + "****" + name[name.length - 1];;
}
function test(name) {
console.log(name, "=>", obscure(name));
}
test("Ron");
test("Jeniffer");
这两个都假定名称至少有两个字符长。 I pity the fool会以T先生的姓氏来尝试。
答案 1 :(得分:2)
由于每个条件上都需要有四个星号,因此您可以创建一个可重用的函数来为您创建此格式:
function replace(str){
var firstChar = str.charAt(0);
var lastChar = str.charAt(str.length-1);
return firstChar + '****' + lastChar;
}
var str = 'Jeniffer';
console.log(replace(str));
str = 'America';
console.log(replace(str))
答案 2 :(得分:0)
答案 3 :(得分:0)
找到第一个和最后一个字符,并将****
附加到第一个字符并添加最后一个:
const firstName = 'Jeniffer';
const result = firstName.match(/^.|.$/gi).reduce((s, c, i) => `${s}${!i ? `${c}****` : c }`, '');
console.log(result);