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

例如,我有:

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

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

到目前为止,我尝试了:

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

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


当前回答

str.replace(new RegExp(".","gm")," ")

其他回答

对于这个简单的场景,我也建议使用javascript内置的方法。

你可以试试这个:

"okay.this.is.a.string".split(".").join("")

问候

@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

补充(搜索,补充)[MDN]

 ".a.b.c.".replaceAll('.', ' ')
 // result: " a b c "

 // Using RegEx. You MUST use a global RegEx.
 ".a.b.c.".replaceAll(/\./g, ' ')
 // result: " a b c "
    

replaceAll()用replaceWith替换所有出现的搜索。

它实际上与使用全局regex(*)的replace() [MDN]相同,在我的视图中,仅仅是replaceAll()更具可读性。

(*)表示它将匹配所有的事件。


重要(!)如果你选择regex:

当使用regexp时,你必须设置全局(“g”)标志; 否则,它将抛出TypeError: "replaceAll必须被调用 一个全局RegExp”。

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

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

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

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