私は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);
};
}
このようにして、文字列全体で機能する追加の機能が得られます。