如果我得到一个内部有<BR \>
的元素,并使用innerText
属性获取它的文本,我会看到换行符是两个字符:13和10.是什么决定了这一点?它是浏览器还是网页的编码?
我想要确保换行符始终是这两个字符(只要它是网页静态内容的一部分而不是动态创建的内容)或修改我的文本处理算法来处理这两种可能性。
我将使用split
方法将文本拆分为行。我不确定是否应该使用split("\r\n")
或更复杂的代码。
答案 0 :(得分:6)
split(/\r\n?|\n/g)
应该处理UNIX换行符,windows换行符和旧式Mac换行符。
unicode还有一些其他字符被视为换行符,但这些额外字符不太可能用于替换HTML <br>
中的innerText
。
13对应\r
,称为CR或回车。
10对应于\n
,称为LF或换行。
两个“\ r \ n”的组合称为CRLF行分隔符。
其中一些被认为是其他网络语言中的行终止符。例如。 U + 2028和U + 2029是JavaScript中的行终止符,U + 000C被认为是CSS中的行终止符。
答案 1 :(得分:3)
这取决于您的编辑器和/或操作系统。 Windows使用\ r(13)\ n(10)。 Unix系统只使用\ n。旧的mac使用\ r \ n。 你可以只用\ 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')
答案 2 :(得分:0)
它通常依赖于操作系统。 Windows是\ r \ n,\ r是针对Mac而\ n是针对Linux
答案 3 :(得分:0)
text.split(/ \ S * \ N + /)
在换行符上拆分文字。 在换行符之前移除任何空白字符总是安全的, 但不是之后。