在JavaScript中是否存在類似於Java的System.getProperty("line.separator");
?JavaScript平臺獨立線路分隔符
編輯:我使用的非瀏覽器JavaScript環境的Node.js
在JavaScript中是否存在類似於Java的System.getProperty("line.separator");
?JavaScript平臺獨立線路分隔符
編輯:我使用的非瀏覽器JavaScript環境的Node.js
我有同樣的問題,碰到這個很老來了題。經過一段時間的投資後,我終於在os文檔的最後找到了os.EOL
。
var os = require('os')
console.log(JSON.stringify(os.EOL)) // prints "\n" on my Mac
JSON.stringify
在這種情況下重要的,否則你只會在控制檯中看到一個空行(這是有道理的,因爲這是它應該做的)。在正常使用情況下,它不是必需的。
無標準定義,沒有。 Section 7.3爲JavaScript程序的源代碼定義了行結束符(有四個),但沒有涉及到平臺定義的文本行結束符。
如果您在談論非瀏覽器環境(shell腳本,基於服務器的JavaScript等),我會查看您正在運行的環境的文檔(NodeJS,Rhino等)。 ),希望能爲你提供這種環境信息。 (在犀牛,當然,你可以使用Java的。)
如果你談論的是基於瀏覽器的環境中,通過大,\n
被使用,但它是「由大」,可以咬您。 :-)甚至在JavaScript甚至看到它們之前,某些瀏覽器甚至會轉換行結尾,例如在textarea
中。例如,this page的原始版本根本沒有回車。但是,如果您在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";
}
這工作,因爲使用\r\n
瀏覽器轉換的\n
解析HTML字符串時,在即時。這裏有一個live running copy,你可以用自己喜歡的瀏覽器自己嘗試。
更新:啊,你使用的NodeJS。不幸的是,和你一樣,我在NodeJS文檔中對這件事一無所知。 NodeJS與C/C++非常緊密地聯繫在一起,並且在C/C++中,無論在文本模式下打開的流上使用\n
作爲linebreak,無論操作系統 —如何,它都會在運行時轉換爲特定於操作系統的版本(讀寫)。但是我沒有在NodeJS中看到對文本模式文件流的支持。 fs.open
函數不記錄b
標誌從fopen
(否則它在哪裏得到該標誌的語法),並且如果你看看它的源碼,那麼在MinGW上它就是sets _fmode
to _O_BINARY
。所有這些都讓我懷疑文件只能以二進制模式運行。 console.log
's implementation對換行符使用\n
,這是值得的。
某些瀏覽器使用\n
,有些使用\r\n
。如果你想拆分新行上的文字只是使用這個:
lines = foo.value.split(/\r\n|\r|\n/);
沒有。在RegExp中有換行符(\ n)和回車符(\ r),但沒有像「line.separator」屬性那樣的東西。如果我們在談論客戶端js。
這是最好的回答...等待它... StackOverflow!如果問題包含確定換行符的函數,並且此處鏈接的答案提供了一種檢測平臺的方法,然後推斷在pre或textarea中使用的平臺敏感換行符。
In the browser, how does one determine which flavour of line breaks is appropriate to the OS?
此外,您還可以找到如何預先和文本區域外,javascipt的所有行分隔符轉換爲\n
這裏一個很好的解釋:http://www.bennadel.com/blog/161-Ask-Ben-Javascript-Replace-And-Multiple-Lines-Line-Breaks.htm
對不起,我應該澄清(我上面做了一個編輯)我正在使用非瀏覽器的JavaScript環境,名爲Node.js – tdashroy
這是爲我做的(雖然我偶然發現了這個問題)。
JavaScript Platform Independent Line separator
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";
}
對Node.js的使用有集中的問題,但這個問題的答案說明了跨瀏覽器和跨平臺的良好局面。
[如何確定JavaScript中的操作系統路徑分隔符?](http://stackoverflow.com/questions/125813/how-to-determine-the-os-path-separator-in-javascript) –
路徑分隔符可以是冒號或分號。它與新行分隔符不同。請參閱https://stackoverflow.com/questions/5971964/file-separator-or-file-pathseparator –