C#のEnvironment.NewlineのようにJavaで定義されたNewline定数はありますか?


199

C#には、実行中のプラットフォームに応じて変化する静的プロパティEnvironment.Newlineがあります。

Javaで同様のものはありますか?


2
Techniczlyあなたが尋ねる必要があります:どのようにJavaのは、それが作成されてしまった時にC#はEnvironment.Newlineとして実装されていること改行プロパティを表しん
ピーター

5
私は自分の発言を読み直したので、なぜ自分自身も私が何を考えていたのか疑問に思います
Peter

回答:



88

Java 7以降:

System.lineSeparator()

Java API:System.lineSeparator

システム依存の行区切り文字列を返します。常に同じ値を返します-システムプロパティline.separatorの初期値。UNIXシステムでは、「\ n」を返します。Microsoft Windowsシステムでは、「\ r \ n」を返します。


60

このプロパティは、多くの人が思っているほど有用ではないことに注意してください。たとえば、アプリがWindowsマシンで実行されているからといって、読み込んでいるファイルがWindowsスタイルの行区切り文字を使用しているとは限りません。多くのWebページには、「\ n」と「\ r \ n」の混合物が含まれており、異なるソースからまとめられています。テキストを一連の論理行として読み取る場合は、常に3つの主要な行区切り文字スタイル(Windows( "\ r \ n")、Unix / Linux / OSX( "\ n")、およびOSX以前のMac( "\ r")。

テキストを書いているときは、どのプラットフォームで実行しているのかよりも、ファイルがどのように使用されるのかをもっと気にする必要があります。たとえば、Windowsのメモ帳でファイルを読むことを期待する場合は、「\ r \ n」を使用する必要があります。これは、1種類の区切り文字しか認識しないためです。


OSX以前のMac( "\ r")はまだ実際に使用されていますか?それとも、それを安全に「忘れる」ことができると言うのは本当ですか?
Pacerier 2012年

6
まあ、マシン自体がまだ使用されているかどうかにかかわらず、OSX以前のMacで書かれたドキュメントがまだそこにあると想定する必要があります。に短縮(?:\r?\n|\r)したくなりますが(?:\r?n)、安全ではないと思います。(?:\r\n|[\r\n])とにかく好きです。より多くのキャラクターがいることは知っていますが、見た目はすっきりしています。:Dそして、あなたは気にしない場合はどのように多くのあなたが消費する行区切り、[\r\n]+うまく動作します。
アランムーア
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.