javascript - JavaScript 字符串换行符是什么?

标签 javascript newline

\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/

相关文章:

javascript - 无法在从 html 实体创建的换行符上拆分文本区域

bash - echo 换行符输出

C++ getline() 不在行尾停止?

c++ - sdl_ttf 文本换行

javascript - 使用 $ ('#dividname' ).text 将换行符插入 div

javascript - 用 Fetch API 替换 $http

javascript - MarkLogic 应用程序服务器自定义登录页面未从 ajax GET 请求接收 SessionID cookie

javascript - 使用正则表达式识别和隔离希伯来语单词

javascript - Vue 元素不通过 v-show 隐藏

php - 向MySQL插入字符串后,字符 '\n'(换行符)消失