2012-03-21 50 views
0

我試圖刪除JavaScript字符串中的新行。 http://jsfiddle.net/muT5V/如何可靠地取走JavaScript字符串中的新行?

但是,從這段代碼(包括jQuery)產生的警告框仍然保留新行。

我的javascript:

var s = $('#aDivWithContent').html(); 
s = s.replace('\n', '').replace('\s', ''); 
alert(s);​ 

我的HTML:

<div id="aDivWithContent"> 
    <ul> 
     <li>foo</li> 
     <li>bar</li> 
     <li>baz</li> 
    </ul> 
</div>​ 

爲什麼?

+0

如果要將正則表達式定義爲文字字符串,則可能必須用另一個反斜槓轉義反斜槓。 – jahroy 2012-03-21 06:58:15

+0

謝謝,但我不認爲這可以工作:http://jsfiddle.net/muT5V/4/什麼是字符串的替代定義?原始字符串? – dangerChihuahua007 2012-03-21 06:59:13

+1

我相信有另一種語法如下所示:someString.replace(/ \ n/g,''); – jahroy 2012-03-21 07:00:57

回答

4

嘗試:

s = s.replace(/(\r\n|\n|\r|\t|\s)/gm,""); 
+3

請注意,\ s將刪除所有空格,所以如果你有「富吧」,它會變成「foobar」 – sikander 2012-03-21 06:59:42

2

你需要使用正則表達式-g選項和\ r清理

變種R =新的RegExp( 「\ R」, 「G」);

var n = new RegExp(「\ n」,「g」);

str = str.replace(r,'')。replace(n,'');

+0

我只是想解釋,而不是給單行代碼 – Zuuum 2012-03-21 07:06:45

0

原因是,replace()只替換了找到的ONE。 如果您將RegEx用作replace()的第一個參數,則所有找到的結果都將被替換。

var s = $('#aDivWithContent').html(); 
s = s.replace(new RegExp("\n", "g"), 'a'); 
s = s.replace(new RegExp("\s", "g"), 'b'); 

alert(s); 
相關問題