什么是JavaScript字符串换行符?
是所有平台上的统一换行字符序列吗?如果不是,我如何确定当前环境的字符?
我不是在问有关HTML换行符元素(<BR/>
)的问题。我问的是有关在JavaScript字符串中使用的换行符序列的问题。
解决方案
我刚刚使用这个愚蠢的脚本测试了几个浏览器:
数据-lang="js"数据-隐藏="假"数据-控制台="真"数据-巴贝尔="假">function log_newline(msg, test_value) {
if (!test_value) {
test_value = document.getElementById('test').value;
}
console.log(msg + ': ' + (test_value.match(//) ? 'CR' : '')
+ ' ' + (test_value.match(/
/) ? 'LF' : ''));
}
log_newline('HTML source');
log_newline('JS string', "foo
bar");
log_newline('JS template literal', `bar
baz`);
<textarea id="test" name="test">
</textarea>
Windows上的IE8和Opera 9使用
。我测试的所有其他浏览器(Windows上的Safari 4和Firefox 3.5,以及Linux上的Firefox 3.0)都使用
。它们在设置值时都可以很好地处理
,尽管IE和Opera会在内部再次将其转换回
。有一篇名为Line endings in Javascript的SitePoint文章介绍了更多细节。
还请注意,这与HTML文件本身中的实际行尾无关(
和
都会得到相同的结果)。
提交表单时,所有浏览器都会使用URL编码将换行符规范化为%0D%0A
。要查看这一点,请加载例如data:text/html,<form><textarea name="foo">foo%0abar</textarea><input type="submit"></form>
并按下提交按钮。(某些浏览器会阻止加载提交的页面,但您可以在控制台中看到URL编码的表单值。)
我不认为你真的需要做太多的决定。如果您只想在换行符上拆分文本,可以这样做:
lines = foo.value.split(/
||
/g);
相关文章