是否在Java中定义了Newline常量,如C#中的Environment.Newline?

orj*_*orj 187 java

在C#中,静态属性Environment.Newline根据运行平台而改变.

Java中有类似的东西吗?

Tom*_*rst 261

从Java 7(和Android API级别19)开始:

System.lineSeparator()
Run Code Online (Sandbox Code Playgroud)

文档:Java Platform SE 7


对于旧版本的Java,请使用:

System.getProperty("line.separator");
Run Code Online (Sandbox Code Playgroud)

有关其他属性,请参阅https://java.sun.com/docs/books/tutorial/essential/environment/sysprop.html.

  • 仅供参考,从Java 7开始,有一种直接返回值的方法:[System.lineSeparator()](http://docs.oracle.com/javase/7/docs/api/java/lang/System.html#lineSeparator %28%29) (150认同)
  • 在Android中,调用还需要API 19 (5认同)

J.S*_*eve 87

从Java 7开始:

System.lineSeparator()
Run Code Online (Sandbox Code Playgroud)

Java API:System.lineSeparator

返回依赖于系统的行分隔符字符串.它始终返回相同的值 - 系统属性line.separator的初始值.在UNIX系统上,它返回"\n"; 在Microsoft Windows系统上,它返回"\ r \n".


Ala*_*ore 59

请注意,此属性并不像许多人认为的那样有用.例如,仅仅因为您的应用程序在Windows计算机上运行,​​并不意味着它正在读取的文件将使用Windows样式的行分隔符.许多网页包含"\n"和"\ r \n"的混合,从不同的来源拼凑而成.当您将文本作为一系列逻辑行读取时,应始终查找所有三种主要的行分隔符样式:Windows("\ r \n"),Unix/Linux/OSX("\n")和pre-OSX Mac("\ r").

当您编写文本时,您应该更关心文件的使用方式而不是您正在运行的平台.例如,如果您希望人们在Windows记事本中读取该文件,则应使用"\ r \n",因为它只识别一种分隔符.

  • 好吧,无论机器本身是否仍然在使用,你必须假设还有那些在OSX之前的Mac上写过*的文件.我知道将'(?:\ r?\n |\r)'缩短为`(?:\ r?n)`是很诱人的,但不,我不认为它是安全的.无论如何,我更喜欢`(?:\ r \n | [\ r \n])` 我知道它的角色更多,但它看起来更整洁.:D如果你不在乎*你消耗了多少*行分隔符,`[\ r \n] +`工作正常. (6认同)