如果我得到一個裏面有<BR \>
的元素,並使用innerText
屬性獲取它的文本,我看到換行符是兩個字符:13和10.什麼決定了這一點?它是瀏覽器還是網頁的編碼?IE瀏覽器的javascript中是否有換行符? r n?
我想要確保換行符總是會是這兩個字符(只要它是網頁的靜態內容的一部分,而不是動態創建的內容)或修改我的文本處理算法以處理這兩種可能性。
這是我將用於將文本拆分爲符合split
方法的行。我不確定是否應該使用split("\r\n")
或更復雜的代碼。
如果我得到一個裏面有<BR \>
的元素,並使用innerText
屬性獲取它的文本,我看到換行符是兩個字符:13和10.什麼決定了這一點?它是瀏覽器還是網頁的編碼?IE瀏覽器的javascript中是否有換行符? r n?
我想要確保換行符總是會是這兩個字符(只要它是網頁的靜態內容的一部分,而不是動態創建的內容)或修改我的文本處理算法以處理這兩種可能性。
這是我將用於將文本拆分爲符合split
方法的行。我不確定是否應該使用split("\r\n")
或更復雜的代碼。
這取決於您的編輯器和/或操作系統。 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')
它通常依賴於操作系統。 Windows正在用\ r \ n \ r表示Mac和\ n作爲Linux的
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中的行終止符。
text.split(/ \ s * \ N + /)上換行符
分裂文本。 刪除任意空格字符在換行符之前, 總是安全的,但不是在之後。
是的,我認爲這將是最簡單的方法來做到這一點。 – Juan
這不起作用。 '.replace('\ r \ n','\ n')只替換字符串中的第一個'\ r \ n'。即使只規範化CRLF適用於您,您也需要使用regexp'.replace(/ \ r \ n/g,'\ n')'。 –
好的。據此編輯答案。我現在覺得很愚蠢:-) – Gerben