tda*_*roy 21 javascript node.js
System.getProperty("line.separator");在JavaScript中是否存在类似于Java的东西?
编辑:我使用的是非浏览器JavaScript环境Node.js
zem*_*rco 30
我有同样的问题,并遇到了这个相当古老的问题.投资一段时间后,我终于os.EOL在os文档的最后找到了.
var os = require('os')
console.log(JSON.stringify(os.EOL)) // prints "\n" on my Mac
Run Code Online (Sandbox Code Playgroud)
JSON.stringify在这种情况下是重要的,否则你只会在控制台中看到一个空行(这是有道理的,因为这是应该做的).在正常使用情况下,不需要它.
T.J*_*der 16
没有标准定义,没有.7.3节定义了JavaScript程序源代码的行终止符(有四个),但没有任何内容与平台对文本行终止符的定义有关.
如果您正在谈论非浏览器环境(shell脚本,基于服务器的JavaScript等),我会查看您正在运行的环境(NodeJS,Rhino等)的文档,希望能为您提供这种环境信息.(当然,在Rhino中,你可以使用Java.)
如果你谈论的是基于浏览器的环境中,由大,\n被使用,但它是"由大",可以咬你.:-)有些浏览器甚至会textarea在JavaScript看到它们之前转换行结尾,例如a .例如,此页面的原始版本根本没有回车符.但是,如果您在Internet Explorer中运行该页面,请注意它表示它\r在文本区域的值中找到了字符.不是Chrome或Firefox(即使在Windows上运行),但Opera也添加它们(即使在*nix上运行).所以在浏览器上,我倾向于在访问多行字段值时"标准化"行结尾str = str.replace(/(?:\r\n|\r)+/g, "\n");,以防万一.(假设\r它本身和后面\n都应该是换行符;旧的Mac \r自己使用.)
继续浏览器方面的事情,因为不同的浏览器甚至在同一个操作系统上做不同的事情,有没有办法知道他们使用什么?为什么,是的,你可以找到一个偷偷摸摸的伎俩:
function getLineBreakSequence() {
var div, ta, text;
div = document.createElement("div");
div.innerHTML = "<textarea>one\ntwo</textarea>";
ta = div.firstChild;
text = ta.value;
return text.indexOf("\r") >= 0 ? "\r\n" : "\n";
}
Run Code Online (Sandbox Code Playgroud)
这工作,因为使用该浏览器\r\n 转换的\n解析HTML字符串时,在即时.这是一个实时运行的副本,您可以使用自己喜欢的浏览器自己尝试.
更新:啊,你正在使用NodeJS.可悲的是,和你一样,我在NodeJS文档中没有看到任何相关内容.的NodeJS是非常紧密联系在一起的C/C++,并在C/C++,您使用\n无论对于断行的操作系统-在文本模式下打开流它被转换为对飞操作系统特定版本(读取和写入).但我没有看到NodeJS中对文本模式文件流的任何支持.该fs.open函数没有记录b标志fopen(在其他地方得到了标志语法),如果你查看源,它设置_fmode为_O_BINARY MinGW.所有这些都让我怀疑文件只是处于二进制模式.console.log的实现采用\n了换行,什么是值得.
一些浏览器使用\n和一些使用\r\n.如果要在换行符上拆分文本,请使用以下命令:
lines = foo.value.split(/\r\n|\r|\n/);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
12176 次 |
| 最近记录: |