2011-10-03 149 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

你有沒有試過谷歌「刪除所有多餘的單詞字符間距」? 第三個鏈接是你在找什麼 http://lawrence.ecorp.net/inet/samples/regexp-format.php –

+0

@Massimiliano Peluso - 是的,這就是我如何找到'$ .trim()'。另外,我從SO學到的東西比從搜索引擎學到的要多得多。 –

回答

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

此代碼替換一組連續的空白字符(\s+)由單個空格。請注意,空白字符還包含製表符和換行符。如果您只想替換空格,請用空格替換\s

如果你也想在開頭和結尾刪除空格,包括:

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

此行的開頭(^)和結束($)刪除所有空格字符。 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

爲什麼如此複雜的reg exp只需要'\ s +'?和[爲什麼lookaheads不好](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, ' '); 

的正則表達式匹配一個或多個空格,所以.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,'') 

這使用lookahead用一個空格替換多個空格。

相關問題