2014-06-09 25 views
0

我對我的JavaScript有個疑問。如何在JavaScript中拆分break線?

我從數據庫中檢索這樣的:

lots of texts in line 1 
lots of texts in line 2 
lots of texts in line 3 
lots of texts in line 4 

我想創建一個數組,並創建一個基於特徵線元素。

我有類似

var contents = obj.string //obj.string contains the contents above. 
contents = contents.split(/(\r\n|\r|\n)/g) 

它創造了超過4個元素,因爲有些內容只是一個「breakline」。

任何人都可以幫我得到4個元素嗎?非常感謝!

+0

可能的重複[參考 - 這是什麼正則表達式?](http://stackoverflow.com/questions/22937618/reference-what-does-this-regex-mean) – bjb568

+0

無論如何,你可以循環通過元素和刪除空的元素(修剪後),那麼你應該只剩下4個元素。 –

+2

@ bjb568不確定這是如何重複鏈接的問題? – Alex

回答

1

隱兩種假設。首先,我假設換行符可能由'\r\n','\n''\r'表示。其次,你想忽略結果中的空行。

我覺得你可以首先將所有的線分解成一個單一的形式,然後分裂而忽略空行,這樣acheive兩個:

contents.replace(/(\r\n)|\r|\n/g, '\n').split(/\n+/g) 

替換命令應該將所有不同的換行符'\n',而拆分將拆分線路,無論它看到1個或多個連續'\n' s。

2

這可能不是一個完美的解決方案,但你可以通過\n更換任何\r消毒字符串,然後剪掉最後\n(這會給你,你不需要一個空數組)。

參見例如:

輸出的 var a
var a = "a\nb\rc\n\n\n\n", 
    b = a.replace(/\r/g,"\n").replace(/[\n]+/g,"\n").replace(/\n$/,"").split("\n"); 

輸出的 var b
"a 
bc 



" 

["a", "b", "c"] 

清理的過程如下:

  1. 採取串並更換所有\r\n,這將讓你與多個\n在某些地方
  2. 清潔的\n多個實例,以英文單
  3. 刪除任何尾隨\n避免空數組元素末
  4. 斯普利特陣列在你的問題\n