我有下面的代码在javascript:更换的JavaScript功能不工作
csvReport.name = "My New Report";
$scope.filename = csvReport.name.replace(" ", "_");
,但我得到$scope.filename = My_New Report
。并非所有的空间都替代
这是什么?
我有下面的代码在javascript:更换的JavaScript功能不工作
csvReport.name = "My New Report";
$scope.filename = csvReport.name.replace(" ", "_");
,但我得到$scope.filename = My_New Report
。并非所有的空间都替代
这是什么?
.replace
会经常更换,除了第一次出现,如果你使用正则表达式这样的:
csvReport.name.replace(/ /g, "_");
Thanks!It Works!:) – IFrizy
您可以使用正则表达式与全球开关(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);
};
}
这种方式,你有一个对整个字符串工作方式的其他功能。
这项工作的空间,但它是危险的,如果他想替换像''的字符。 ''因为'。'表示regExp中的每个字符,但是你可以用正则表达式在函数中转义,或者在调用函数时将其转义:'.replaceAll('\\。','_')' –
@ Karl-AndréGagnon我修改了我的答案,为'regexp'特殊字符添加了转义'replace'字符串。 – maketest
你为什么标签这个'performance'? – crashmstr
以下所有答案都是正确的,但没有一个作者喜欢upvote其他正确的......这有点令人失望:( –