【问题标题】:How to replace repeating characters with the same number of asterisks?如何用相同数量的星号替换重复字符?
【发布时间】:2015-09-29 21:55:54
【问题描述】:

我想用相同数量的星号 (*) 替换重复的字符。

例如:

replaceLetters("keviin");

应该返回:

kev**n

还有:

replaceLetters("haaa");

应该返回:

h***

我该怎么做?

如果我使用下面的代码,它确实会替换重复字符,但它会用一个星号而不是与重复字符相同数量的星号替换整个重复。

function replaceLetters(s) {
    s.replace(/([^])\1+/g, '*');
}

【问题讨论】:

    标签: javascript regex string replace


    【解决方案1】:

    .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,'*'); 
        });
    }
    

    有很多方法可以解决这个问题,这完全取决于你想如何完成任务。

    【讨论】:

    • 好吧,一切也不是什么都不是。 @torazaburo
    猜你喜欢
    • 1970-01-01
    • 2012-07-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-09-10
    • 1970-01-01
    • 2015-03-31
    • 1970-01-01
    相关资源
    最近更新 更多