2014-02-19 118 views
56

如何在節點通過換行('\ n')拆分字符串? 我有簡單的字符串,如var a = "test.js\nagain.js",我需要得到["test.js", "again.js"]。 我試過如何在節點通過換行符(' n')拆分字符串?

a.split("\n"); 
a.split("\\n"); 
a.split("\r\n"); 
a.split("\r"); 

但是以上都不起作用。

+0

可能重複的[JavaScript字符串換行符?](http://stackoverflow.com/questions/1155678/javascript-string-newline-character) – Mene

+3

['分裂()' ](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/split)不會修改原始字符串。 – thgaskell

回答

2

第一個應該工作:

> "a\nb".split("\n"); 
[ 'a', 'b' ] 
> var a = "test.js\nagain.js" 
undefined 
> a.split("\n"); 
[ 'test.js', 'again.js' ] 
18
a = a.split("\n"); 

注意split婷返回新的數組,而不是僅僅把它分配給原始字符串。你需要明確地將它存儲在一個變量中。

+2

如果你低於這個限制,這真的應該告訴你,你應該詳細說明,而不是添加絨毛,不會增加你的答案。 –

+3

如果該限制是100個字符,該怎麼辦?或1000?我無法給這個答案添加任何東西,這已經夠好了。 – alex

+0

極限不是100,或1000,它是30.你至少可以添加thgaskell在評論中所說的內容;這很容易讓你超過30人。 –

117

嘗試在/\r?\n/之類的正則表達式上進行拆分,以便Windows和UNIX系統均可使用。

> "a\nb\r\nc".split(/\r?\n/) 
[ 'a', 'b', 'c' ] 
+1

經典Mac電腦怎麼樣? ;) – AshleyF

+3

經典Macs隨着史蒂夫喬布斯去世...悲傷:( – ymz

+10

趕上\ n,\ r和\ r \ n:'split(/ [\ r \ n] + /)' –

24

如果該文件是原生系統(當然也沒有的,保證),然後節點可以幫你:

var os = require('os'); 

a.split(os.EOL); 

這通常是從節點構建輸出字符串比較有用盡管如此,平臺可移植性。

+0

是的,你通常不應該這樣做,你應該解析新行,不管平臺如何。 – 1j01

+0

我強調這是專門針對第一句話中系統原生文件的情況。以上回答適用於何時未知或混合的情況 – qubyte

+0

正確或現在「已知」但未來可能會改變。 – 1j01

4

我做了一個eol module用於處理節點或瀏覽器中的行尾。它有一個分割方法等

var lines = eol.split(text) 
+0

很好,謝謝! – Michael