我想用星号(*)的相同数字替换重复的字符。
例如:
replaceLetters("keviin");
应该返回:
千电子伏** N
和
replaceLetters("haaa");
应该返回:
ħ***
我该怎么做呢?
如果我使用下面的代码,它会替换重复的字符,但它会用一个星号代替整个重复,而不是重复字符的星号数。
function replaceLetters(s) {
s.replace(/([^])\1+/g, '*');
}
答案 0 :(得分:2)
.replace()
允许将函数作为第二个参数传递。传递的回调函数的参数将是匹配的字符串。一旦访问了匹配的字符串,就可以通过多种方式将匹配的字符串替换为相同数量的星号。
例如,您可以将字符串转换为数组,使用map将每个数组项替换为星号,然后将数组作为字符串重新连接在一起。
function replaceLetters(s) {
return s.replace(/([^])\1+/g,function(m) {
return m.split('').map(function(){ return '*' }).join('');
});
}
或者您可以用星号替换匹配字符串中的每个字符。
function replaceLetters(s) {
return s.replace(/([^])\1+/g,function(m) {
return m.replace(/[^]/g,'*');
});
}
有很多方法可以解决这个问题,这完全取决于你想要完成任务的方式。