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

时间:2016-03-25 23:50:14

标签: javascript

我已经查询了这个问题,但我还不熟悉编码,因此我无法将其他答案与此相关联。

给定一个字符串s,返回一个字符串
所有第一个char出现的地方 已更改为' *',但不要更改
第一个字符本身。 例如'多路重合'收益率' 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, '*');
    }

2 个答案:

答案 0 :(得分:0)

要替换所有出现的事件而不仅仅是第一次出现,您可以使用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

这适用于简单的字符串,如" babble"在你的例子中。如果字符串可以以正则表达式中的特殊符号开头,例如'。',则需要将其转义,正如@Oriol在注释中指出的那样。了解它是如何在this other answer中完成的。

答案 1 :(得分:0)

  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'))