【发布时间】:2010-09-19 19:26:49
【问题描述】:
在 C# 中,静态属性 Environment.Newline 会根据运行平台而变化。
Java中有类似的东西吗?
【问题讨论】:
标签: java
在 C# 中,静态属性 Environment.Newline 会根据运行平台而变化。
Java中有类似的东西吗?
【问题讨论】:
标签: java
从 Java 7(和 Android API 级别 19)开始:
System.lineSeparator()
对于旧版本的 Java,请使用:
System.getProperty("line.separator");
有关其他属性,请参阅https://java.sun.com/docs/books/tutorial/essential/environment/sysprop.html。
【讨论】:
从 Java 7 开始:
System.lineSeparator()
Java API : System.lineSeparator
返回系统相关的行分隔符字符串。它总是返回 相同的值 - 系统属性的初始值 行分隔符。在 UNIX 系统上,它返回 "\n";在微软视窗上 它返回“\r\n”的系统。
【讨论】:
请注意,此属性并不像许多人认为的那样有用。例如,仅仅因为您的应用程序在 Windows 机器上运行并不意味着它正在读取的文件将使用 Windows 样式的行分隔符。许多网页包含“\n”和“\r\n”的混合体,它们是从不同的来源拼凑而成的。当您将文本作为一系列逻辑行阅读时,您应该始终查找所有三种主要的行分隔符样式:Windows ("\r\n")、Unix/Linux/OSX ("\n") 和OSX 之前的 Mac ("\r")。
当您编写文本时,您应该更关心文件的使用方式,而不是您运行的平台。例如,如果您希望人们在 Windows 记事本中阅读文件,则应使用“\r\n”,因为它只能识别一种分隔符。
【讨论】:
(?:\r?\n|\r) 缩短为(?:\r?n) 很诱人,但不,我认为这不安全。反正我更喜欢(?:\r\n|[\r\n]);我知道这是更多的字符,但它看起来更整洁。 :D 如果你不关心 多少 行分隔符,[\r\n]+ 工作得很好。