このコードを使用してスペースを_で置き換えようとしています。文字列の最初のスペースで機能しますが、スペースの他のすべてのインスタンスは変更されません。誰かが理由を知っていますか?
function updateKey()
{
var key=$("#title").val();
key=key.replace(" ","_");
$("#url_key").val(key);
}
このコードを使用してスペースを_で置き換えようとしています。文字列の最初のスペースで機能しますが、スペースの他のすべてのインスタンスは変更されません。誰かが理由を知っていますか?
function updateKey()
{
var key=$("#title").val();
key=key.replace(" ","_");
$("#url_key").val(key);
}
回答:
試す .replace(/ /g,"_");
編集:または.split(' ').join('_')
REへの嫌悪感がある場合
編集:ジョンレジグさんのコメント:
文字列全体を静的検索と静的置換で検索して置換する場合は、.split( "match")。join( "replace")を使用してアクションを実行する方が高速です。最近のほとんどのブラウザでは、このようになっています。(次のバージョンのFirefoxでは、.replace(/ match / g、 "replace")のパフォーマンスを大幅に改善するための変更が行われています-したがって、前のステートメントは長くは当てはまりません。)
/ /g
使用する代わりに/\ /g
-両方ともJavaScriptで動作します。後者はCoffeeScriptでも機能します。
.replace(/ /g,"_");
よりも高速です.split(' ').join('_')
。
JSパフォーマンステストを作成しましたhttp://jsperf.com/split-and-join-vs-replace2
これが古いことはわかっていますが、Stringの拡張について言及している人は誰もいませんでしたprototype
。
String.prototype.replaceAll = function(search, replace){
if(!search || !replace){return this;} //if search entry or replace entry empty return the string
return this.replace(new RegExp('[' + search + ']', 'g'), replace); //global RegEx search for all instances ("g") of your search entry and replace them all.
};