是\n
JavaScript 中适用于所有平台的通用换行符序列?如果不是,我如何确定当前环境的字符?
我不是在询问 HTML 换行元素 ( <BR/>
)。我询问的是 JavaScript 字符串中使用的换行符序列。
最佳答案
我刚刚使用这段愚蠢的 JavaScript 测试了一些浏览器:
function log_newline(msg, test_value) {
if (!test_value) {
test_value = document.getElementById('test').value;
}
console.log(msg + ': ' + (test_value.match(/\r/) ? 'CR' : '')
+ ' ' + (test_value.match(/\n/) ? 'LF' : ''));
}
log_newline('HTML source');
log_newline('JS string', "foo\nbar");
log_newline('JS template literal', `bar
baz`);
<textarea id="test" name="test">
</textarea>
Windows 上的 IE8 和 Opera 9 使用 \r\n
。我测试的所有其他浏览器(Windows 上的 Safari 4 和 Firefox 3.5,以及 Linux 上的 Firefox 3.0)均使用 \n
。他们都可以处理\n
设置该值时就很好,尽管 IE 和 Opera 会将其转换回 \r\n
再次内部。有一篇 SitePoint 文章,其中包含更多详细信息,名为 Line endings in Javascript .
另请注意,这与 HTML 文件本身的实际行结束无关(\n
和 \r\n
给出相同的结果)。
提交表单时,所有浏览器都会将换行符规范化为 %0D%0A
在 URL 编码中。要查看这一点,请加载例如data:text/html,<form><textarea name="foo">foo%0abar</textarea><input type="submit"></form>
并按提交按钮。 (有些浏览器会阻止加载提交的页面,但您可以在控制台中看到 URL 编码的表单值。)
不过,我认为您实际上不需要做太多决定。如果您只想在换行符上分割文本,您可以执行以下操作:
lines = foo.value.split(/\r\n|\r|\n/g);
关于javascript - JavaScript 字符串换行符是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34122551/