我試圖運行這行代碼,並想知道爲什麼它不工作。有沒有人有這個答案?關於javascript的問題 - string.replace()
var string = "foo bar";
string = string.replace(" ", "");
alert(string.length);
爲什麼發出字符串的長度不改爲6?
我試圖運行這行代碼,並想知道爲什麼它不工作。有沒有人有這個答案?關於javascript的問題 - string.replace()
var string = "foo bar";
string = string.replace(" ", "");
alert(string.length);
爲什麼發出字符串的長度不改爲6?
因爲您的字符串中有多個space
,而.replace
正在替換一個空格,所以遇到了第一個空格。
可正常工作,只有一個空間
var string = "foo bar";
string = string.replace(" ", "");
alert(string.length);
的功能只是取代你搜索的字符串的一個實例。
要更換比較多,可以搭配正則表達式:
string = string.replace(/\s+/g, '');
這條所有的「空白」字符。 「\ s」匹配空格,「+」表示空白字符的「一個或多個匹配項」,尾部的「g」表示「匹配字符串中的所有匹配序列」。
當傳遞一個字符串作爲第一個參數時,將只替換該字符串的第一個匹配項。要取代所有內容,您需要一個正則表達式:
alert("foo bar".replace(/ /g, ""));
這是因爲只有一個空間已被替換。根據JavaScript 1.5規範,String.replace()
將正則表達式作爲第一個參數,並且字符串參數的行爲未定義。瀏覽器後來決定對字符串進行類似處理 - 但是沒有辦法在字符串上指定g
標誌,因此只能進行一次替換。這將做你想要什麼:
string = string.replace(/ /g, '');
的由尖(/\s+/g
)提供的版本可能更有效。然而。它也將取代其他類型的空格(製表符,換行符)。