2011-06-22 79 views

回答

2

因爲您的字符串中有多個space,而.replace正在替換一個空格,所以遇到了第一個空格。

可正常工作,只有一個空間

var string = "foo bar"; 
string = string.replace(" ", ""); 
alert(string.length); 
4

的功能只是取代你搜索的字符串的一個實例。

要更換比較多,可以搭配正則表達式:

string = string.replace(/\s+/g, ''); 

這條所有的「空白」字符。 「\ s」匹配空格,「+」表示空白字符的「一個或多個匹配項」,尾部的「g」表示「匹配字符串中的所有匹配序列」。

1

當傳遞一個字符串作爲第一個參數時,將只替換該字符串的第一個匹配項。要取代所有內容,您需要一個正則表達式:

alert("foo  bar".replace(/ /g, "")); 
0

這是因爲只有一個空間已被替換。根據JavaScript 1.5規範,String.replace()將正則表達式作爲第一個參數,並且字符串參數的行爲未定義。瀏覽器後來決定對字符串進行類似處理 - 但是沒有辦法在字符串上指定g標誌,因此只能進行一次替換。這將做你想要什麼:

string = string.replace(/ /g, ''); 

的由尖(/\s+/g)提供的版本可能更有效。然而。它也將取代其他類型的空格(製表符,換行符)。