簡體   English   中英

關於javascript的問題-string.replace()

[英]questions on javascript - string.replace()

我試圖運行這行代碼,想知道為什么它不起作用。 有人對此有答案嗎?

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

為什么不將字符串的長度改為6?

該函數僅替換您搜索的字符串的一個實例。

要替換更多內容,可以使用正則表達式進行匹配:

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

這將刪除所有“空白”字符。 “ \\ s”匹配空格,“ +”表示空格字符的“一次或多次出現”,后跟“ g”表示“對字符串中的所有匹配序列執行此操作”。

由於字符串中包含多個space ,並且.replace將替換一個空格,因此遇到了第一個空格。

可以按預期工作,只有一個空間

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

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

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

那是因為只替換了一個空格。 根據JavaScript 1.5規范, String.replace()將正則表達式作為第一個參數,並且字符串參數的行為未定義。 瀏覽器后來決定以類似方式對待字符串-但由於無法在字符串上指定g標志,因此只能進行一次替換。 這將做您想要的:

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

但是,Pointy提供的版本( /\\s+/g )可能更有效。 並且它將替換其他類型的空格(制表符,換行符)。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM