JavaScriptにJavaのSystem.getProperty("line.separator");
と似たものはありますか?JavaScriptプラットフォーム独立型ラインセパレータ
編集:私はノー、標準で定義されていない
JavaScriptにJavaのSystem.getProperty("line.separator");
と似たものはありますか?JavaScriptプラットフォーム独立型ラインセパレータ
編集:私はノー、標準で定義されていない
を私は同じ問題を抱えていたし、このかなり古い出くわし質問。私はついにosの文書の最後にos.EOL
が見つかったのです。
var os = require('os')
console.log(JSON.stringify(os.EOL)) // prints "\n" on my Mac
JSON.stringify
この場合には重要ですが、それ以外の場合はあなただけ(それはそれが何をすべきかだから理にかなって)コンソールに空白行を見ることになります。通常のユースケースでは必要ありません。
Node.jsの非ブラウザのJavaScript環境を使用しています。 Section 7.3は、JavaScriptプログラムのソースコード(4つあります)の行終端文字を定義しますが、プラットフォームのテキストの行終端文字の定義には関係しません。
ブラウザ以外の環境(シェルスクリプト、サーバーベースのJavaScriptなど)については、実行している環境(NodeJS、Rhinoなど)のドキュメントを参照してください。 )、それはうまくいけば、あなたのためにそのような環境情報を持っています。 (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
を使用していました。)
物事のブラウザ側を続けると、別のブラウザでも異なることを行うので、同じOS上で、彼らが何を使用しているかを知る方法はありますか?なぜ、そうあなたは卑劣なトリックを見つけることができ、そこにある:
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
を使用するブラウザはオンザフライHTML文字列を解析するとき\n
を変換するので、これは動作します。 live running copyは、お好みのブラウザで試してみることができます。
更新:ああ、あなたが使用しているNodeJS。残念ながら、あなたと同じように、NodeJSのドキュメントでは何も表示されません。 NodeJSはC/C++と非常に密接に結びついており、C/C++では、テキストモードでオープンされたストリームのOS番号 —に関係なく、改行には\n
を使用します。 )。しかし、NodeJSのテキストモードファイルストリームはサポートされていません。 fs.open
関数は、fopen
からのb
フラグを文書化していません(それ以外の場合は、そのフラグ構文を持っています)。ソースを見ると、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!質問には改行文字を決定する関数が1つ含まれており、ここにリンクされている答えはプラットフォームを検出し、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
申し訳ありませんが、私は明確にする必要があります(上記の編集を行いました)。私はNode.jsというブラウザ以外のJavaScript環境を使用しています – 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でOSのパス区切りを判別する方法]の複製がありますか?(http://stackoverflow.com/questions/125813/how-to-determine-the-os-path-separator-in-javascript) –
パス区切り文字は、コロンまたはセミコロンのいずれかです。新しい行区切り文字と同じではありません。 https://stackoverflow.com/questions/5971964/file-separator-or-file-pathseparator –