4

我在javascript中有下一个代码:

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

但我明白了$scope.filename = My_New Report。并非所有空格都替换。

它是什么?

4

4 回答 4

5

您可以使用正则表达式替换

"My New Report".replace(/ /g,'_')

演示

于 2013-10-25T12:22:13.707 回答
5

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

csvReport.name.replace(/ /g, "_");
于 2013-10-25T12:22:45.483 回答
4

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

csvReport.name = "My New Report";
$scope.filename = csvReport.name.replace(/ /g, "_");
于 2013-10-25T12:22:16.247 回答
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);
    };
}

这样,您就有了适用于整个字符串的附加功能。

于 2013-10-25T12:22:42.737 回答