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 に答える