如何替换除第一个字符外的多个字符

How to replace multiple characters except the first?

本文关键字:字符 第一个 何替换 替换      更新时间:2023-09-26

我已经查过这个问题,但我对编码很陌生,所以我不太能将其他答案与之联系起来。

给定字符串s,返回一个字符串
其中其第一个字符的所有出现都具有已更改为"*",但不要更改
第一个字符本身。例如,"胡言乱语"产生"ba**le"假设字符串的长度为1或更大。提示:s.replace(stra,strb)返回字符串s的一个版本其中stra的所有实例都已被strb替换。

这就是我所拥有的,但这并没有取代除第一个字符之外的每个字符,它只是取代了下一个字符。

function fixStart(s)
    {
  var c = s.charAt(0);
  return c + s.slice(1).replace(c, '*');
    }
  function fixStart(s) {
    var c = s.charAt(0);
    var outputStr = '';
    // literate through the entire string pushing letters into a new string unless it is the first letter
    for (var i = 0; i < s.length; i++) {
      // if the letter is the first letter AND we are not checking the first letter
      if (s[i] === c && i !== 0) outputStr += '*'
      else outputStr += s[i]
    }
    return outputStr;
  }
  console.log(fixStart('hellohahaha'))

要替换所有出现的事件,而不仅仅是第一次,可以使用RegExp:

function fixStart(s) {
    var c = s.charAt(0);
    return c + s.slice(1).replace(new RegExp(c, 'g'), '*');
}

例如,如果c的值为"b",则new RegExp(c, 'g')等效于/b/g

这将适用于简单的字符串,如您的示例中的"牙牙学语"。如果字符串可能以regex中的特殊符号开头,例如".",正如@Oriol在一条评论中指出的那样,那么你就需要逃离它。看看另一个答案是怎么做的。