2011-07-01 63 views
1

如果我得到一個裏面有<BR \>的元素,並使用innerText屬性獲取它的文本,我看到換行符是兩個字符:13和10.什麼決定了這一點?它是瀏覽器還是網頁的編碼?IE瀏覽器的javascript中是否有換行符? r n?

我想要確保換行符總是會是這兩個字符(只要它是網頁的靜態內容的一部分,而不是動態創建的內容)或修改我的文本處理算法以處理這兩種可能性。

這是我將用於將文本拆分爲符合split方法的行。我不確定是否應該使用split("\r\n")或更復雜的代碼。

回答

3

這取決於您的編輯器和/或操作系統。 Windows使用\ r(13)\ n(10)。 Unix系統只使用\ n。舊電腦使用\ r。 您可以用\ n替換所有\ r \ n,然後在\ n上進行拆分。所以

//"test\r\nnewline".replace('\r\n','\n').split('\n')//only replaces the first newline 
"test\r\nnewline".replace(/\r\n/g, '\n').split('\n') 
+0

是的,我認爲這將是最簡單的方法來做到這一點。 – Juan

+3

這不起作用。 '.replace('\ r \ n','\ n')只替換字符串中的第一個'\ r \ n'。即使只規範化CRLF適用於您,您也需要使用regexp'.replace(/ \ r \ n/g,'\ n')'。 –

+0

好的。據此編輯答案。我現在覺得很愚蠢:-) – Gerben

0

它通常依賴於操作系統。 Windows正在用\ r \ n \ r表示Mac和\ n作爲Linux的

6
split(/\r\n?|\n/g) 

應該處理UNIX換行符,窗口換行,和舊式的Mac換行符。

還有一些其他字符被unicode視爲換行符,但這些額外的字符不可能用於替換HTML innerText中的<br>

13對應於\r,這被稱爲CR或回車。 10對應於\n,它被稱爲LF或換行符。 兩個「\ r \ n」的組合稱爲CRLF行分隔符。

其中一些被認爲是其他網絡語言的行終止符。例如。 U + 2028和U + 2029是JavaScript中的行終止符,U + 000C被認爲是CSS中的行終止符。

0

text.split(/ \ s * \ N + /)上換行符

分裂文本。 刪除任意空格字符在換行符之前, 總是安全的,但不是在之後。

相關問題