JavaScriptでスペースをアンダースコアに置き換えますか?


353

このコードを使用してスペースを_で置き換えようとしています。文字列の最初のスペースで機能しますが、スペースの他のすべてのインスタンスは変更されません。誰かが理由を知っていますか?

function updateKey()
{
    var key=$("#title").val();
    key=key.replace(" ","_");
    $("#url_key").val(key);
}

回答:


694

試す .replace(/ /g,"_");

編集:または.split(' ').join('_')REへの嫌悪感がある場合

編集ジョンレジグさんのコメント

文字列全体を静的検索と静的置換で検索して置換する場合は、.split( "match")。join( "replace")を使用してアクションを実行する方が高速です。最近のほとんどのブラウザでは、このようになっています。(次のバージョンのFirefoxでは、.replace(/ match / g、 "replace")のパフォーマンスを大幅に改善するための変更が行われています-したがって、前のステートメントは長くは当てはまりません。)


1
正規表現なしでこれを行う方法はありますか?
2009年

14
.split( '').join( '_')
Crescent Fresh

7
/ /g使用する代わりに/\ /g-両方ともJavaScriptで動作します。後者はCoffeeScriptでも機能します。
Tom Leys 2013

27
2015年現在、.replace(/ /g,"_");よりも高速です.split(' ').join('_')
ガブリエル・トミツカ、

8
この@Inezを参照する将来の人々は、分割/参加VSの両方の速度をテストするためのリンクを持っています。交換してください。2018年後半以降、置換は大幅に速くなりました。
リックス2018


58

以下のプラザンナの質問に答えるには:

JavaScriptで複数のスペースを1つのスペースに置き換えるにはどうすればよいですか?

同じ関数replaceを別の正規表現で使用します。空白の表現はで\sあり、「1回以上」の表現+はプラス記号であるため、Adamの答えを次のように置き換えるだけです。

key=key.replace(/\s+/g,"_");

30

あなたはこれを試すことができます

 var str = 'hello     world  !!';
 str = str.replace(/\s+/g, '-');

複数のスペースを1つの「-」で置き換えることもできます。


3
おそらく注目に値します:これは他の空白も削除します。
Berry M.

18

JSパフォーマンステストを作成しましたhttp://jsperf.com/split-and-join-vs-replace2


1
今日では、置換の方が全体的に良い選択です
Houman '25

ケイブ-何?すべてのブラウザが同じというわけではありませんが、平均して分割/結合の方がはるかに優れています。実際、最近の多くのブラウザでは、それはより良い調子です!これを設定してくれたInezに感謝します!
David Hobs、

4
1年ちょっと後、Chrome 32.0.1700.107 .. str.replace()で上記のテストを実行すると、はるかに優れた結果が得られます(64%高速)
jenovachild

12

スペースをアンダースコアに置き換えます

var str = 'How are you';
var replaced = str.split(' ').join('_');

出力: How_are_you


3

これが古いことはわかっていますが、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.
};

1
それはひどい考えなので、誰もそれをするのを見ませんでした。詳細については、この他のSOの質問を確認してください。

2

ただ使用するreplace

var text = 'Hello World';
    
new_text = text.replace(' ', '_');
    
console.log(new_text);


3
これは最初のスペースを置き換えるだけで、それ以降ではありません
Narendra
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.