替换JavaScript don'的函数;行不通

替换JavaScript don'的函数;行不通,javascript,Javascript,我有下一个javascript代码: csvReport.name = "My New Report"; $scope.filename = csvReport.name.replace(" ", "_"); 但是我得到了$scope.filename=我的新报告。并不是所有的空格都被替换 它是什么?您可以使用: 您可以使用带有全局开关(g)的正则表达式来实际替换所有实例,如下所示: csvReport.name = "My New Report"; $scope.filename = csv

我有下一个javascript代码:

csvReport.name = "My New Report";
$scope.filename = csvReport.name.replace(" ", "_");
但是我得到了
$scope.filename=我的新报告
。并不是所有的空格都被替换

它是什么?

您可以使用:


您可以使用带有全局开关(
g
)的正则表达式来实际替换所有实例,如下所示:

csvReport.name = "My New Report";
$scope.filename = csvReport.name.replace(/ /g, "_");

函数
replace
仅替换第一个参数的第一次出现。可以使用正则表达式替换整个字符串

试试这个:

if (!String.replaceAll) {
    String.prototype.replaceAll = function(replace, value) {
        var regexpStr = replace.replace(/[-[\]{}()*+?.,\\^$|#\s]/g, "\\$&")
        return this.replace(new RegExp(regExpStr, 'g'), value);
    };
}

这样,您就有了可以处理整个字符串的附加函数。

.replace
将始终替换第一个出现的字符串,除非您使用这样的正则表达式:

csvReport.name.replace(/ /g, "_");

你为什么要给这个
性能
?下面所有的答案都是正确的,但没有一位作者愿意投票给其他正确的答案。。。这有点令人失望:(这对空格很有用,但如果他想替换
这样的字符,这是很危险的,因为
意味着regExp中的每个字符。但是,您可以使用regExp在函数中转义。或者在调用函数时转义:
.replaceAll('\.','\u')
@Karl AndréGagnon我修改了我的答案,为
regexp
特殊字符添加了转义
replace
字符串。
csvReport.name.replace(/ /g, "_");