2011-10-03 16 views
21

文字列リテラルの単語間の余分なスペースをすべて削除するにはどうすればよいですか?Javascript - 単語間の余分なスペースをすべて削除する方法

"some value" 

はまた

"some value" 

になった場合は、

" This should become something   else too . " 

.の移動を心配しないでください

"This should become something else too ." 

になります。上記のとおりです。私は$.trim(str)を使用して後尾/後端スペースの除去を達成できることを知っています。しかし、私はどのように単語の間に1つのスペースを行うのか分からないトリック。

+0

レスキューに....! – Kasturi

+0

Googleに "単語間の余分なスペースをすべて削除してください"というJavaScriptを試してみましたか? 3番目のリンクはあなたが探しているものです http://lawrence.ecorp.net/inet/samples/regexp-format.php –

+0

@Massimiliano Peluso - そう、私は '$ .trim()'を見つけました。また、私は検索エンジンよりもずっと多くのことを知っています。 –

答えて

41
var string = " This should become something   else too . "; 
string = string.replace(/\s+/g, " "); 

このコードは、単一の空白で空白文字(\s+)の連続したセットを置き換えます。空白文字には、タブと改行も含まれています。空白を置き換える場合は、\sをスペースで置き換えてください。

あなたはまた、最初と最後に空白を削除したい場合は、次のとおりです。

string = string.replace(/^\s+|\s+$/g, ""); 

この行は先頭に(^)とend($)で、すべての空白文字を削除します。 RegExpの末尾にあるgは、グローバルであることを意味します。つまり、すべての発生にマッチして置き換えます。

+0

このソリューションは、私が考えていない汚れた文字をきれいにするので素晴らしいです。 –

+0

var newString = string.replace(/^\ s + | \ s + $/g、 "").replace(/ \ s +/g、 ""); – RTF

11
var str = " This should become something   else too . "; 
str = str.replace(/ +(?=)/g,''); 

ここはa working fiddleです。

+3

使用される正規表現についての少しの説明は素晴らしいでしょう! –

+0

なぜ必要なものが '\ s +'なのか、そのような複雑なreg expはなぜですか?そして[なぜ先読みは良くないのですか](http://stackoverflow.com/questions/1843459/javascript-the-good-parts-why-is-lookahead-not-good)。 – epascarello

+1

これは、文字列 '/ g'全体の空白文字 '(?=)'に先行する空白文字 '/ +'を '、 '''で置き換えることを意味します。あなたはそれについてもっと読むことができます[こちら](http://www.w3schools.com/jsref/jsref_regexp_nfollow.asp) – mogoman

0

別の(おそらくより簡単に理解する)トリックを行います正規表現の置換:

var input = /* whatever */; 
input = input.replace(/ +/g, ' '); 

正規表現は、1つ以上のスペースにマッチするので、.replace()呼び出しは、単一のスペースですべての単一または反復のスペースを置き換えます。

0
var str = 'some value'; 
str.replace(/\s\s+/g, ' '); 
+0

余分な '\ s'はなぜですか?その必要はありません。 – epascarello

4
var str = " This should become something   else too . " 
$.trim(str).replace(/\s(?=\s)/g,'') 

これは、先読みを使用して複数のスペースを1つのスペースに置き換えます。

関連する問題