我在JavaScript中有以下代码:
csvReport.name = "My New Report";
$scope.filename = csvReport.name.replace(" ", "_");
但是我得到了$scope.filename = My_New Report
。并没有替换所有空格。
这是什么意思?
我在JavaScript中有以下代码:
csvReport.name = "My New Report";
$scope.filename = csvReport.name.replace(" ", "_");
但是我得到了$scope.filename = My_New Report
。并没有替换所有空格。
这是什么意思?
.replace
方法总是只替换第一次出现的内容,除非你使用正则表达式来实现全局替换,例如这样:csvReport.name.replace(/ /g, "_");
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);
};
}
这样一来,您就可以拥有适用于整个字符串的附加功能。
.
这样的字符就很危险,因为在正则表达式中 .
代表任意字符。不过你可以在函数中使用正则表达式进行转义,或者在调用函数时对其进行转义:.replaceAll('\\.', '_')
。 - Karl-André Gagnonreplace
字符串以处理 regexp
特殊字符。 - maketest