我在javascript中有下一个代码:
csvReport.name = "My New Report";
$scope.filename = csvReport.name.replace(" ", "_");
但我得$scope.filename = My_New Report
。并非所有空格都在替换。
这是什么?
答案 0 :(得分:5)
答案 1 :(得分:5)
.replace
将始终替换第一次出现,除非您使用正则表达式:
csvReport.name.replace(/ /g, "_");
答案 2 :(得分:4)
您可以使用带有全局开关(g
)的正则表达式来实际替换所有实例,如下所示:
csvReport.name = "My New Report";
$scope.filename = csvReport.name.replace(/ /g, "_");
答案 3 :(得分:2)
函数replace
仅替换第一个参数的第一个外观。您可以使用正则表达式替换整个字符串。
试试这个:
if (!String.replaceAll) {
String.prototype.replaceAll = function(replace, value) {
var regexpStr = replace.replace(/[-[\]{}()*+?.,\\^$|#\s]/g, "\\$&")
return this.replace(new RegExp(regExpStr, 'g'), value);
};
}
通过这种方式,您可以使用适用于整个字符串的附加功能。