我想替换JavaScript字符串中出现的所有点(.)

例如,我有:

var mystring = 'okay.this.is.a.string';

我想要得到:这是一个字符串。

到目前为止,我尝试了:

mystring.replace(/./g,' ')

但这最终将所有字符串替换为空格。


当前回答

你需要逃离。因为它在正则表达式中具有“任意字符”的含义。

mystring = mystring.replace(/\./g,' ')

其他回答

示例:我想将所有双引号(")替换为单引号('),然后代码将如下所示

var str= "\"Hello\""
var regex = new RegExp('"', 'g');
str = str.replace(regex, '\'');
console.log(str); // 'Hello'

@scripto变得更简洁,没有原型:

function strReplaceAll(s, stringToFind, stringToReplace) {
    if (stringToFind === stringToReplace) return s;
    for (let index = s.indexOf(stringToFind); index != -1; index = s.indexOf(stringToFind))
        s = s.replace(stringToFind, stringToReplace);
    return s;
}

以下是它的累积情况:http://jsperf.com/replace-vs-split-join-vs-replaceall/68

你需要逃离。因为它在正则表达式中具有“任意字符”的含义。

mystring = mystring.replace(/\./g,' ')
str.replace(new RegExp(".","gm")," ")

这更简洁/可读,应该比Fagner Brack发布的更好(toLowerCase不是在循环中执行的):

String.prototype.replaceAll = function(search, replace, ignoreCase) {
  if (ignoreCase) {
    var result = [];
    var _string = this.toLowerCase();
    var _search = search.toLowerCase();
    var start = 0, match, length = _search.length;
    while ((match = _string.indexOf(_search, start)) >= 0) {
      result.push(this.slice(start, match));
      start = match + length;
    }
    result.push(this.slice(start));
  } else {
    result = this.split(search);
  }
  return result.join(replace);
}

用法:

alert('Bananas And Bran'.replaceAll('An', '(an)'));