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


199

在C#中,静态属性Environment.Newline随正在运行的平台而变化。

Java有什么类似的东西吗?


2
技术上,您应该问:Java如何代表创建时c#实现为Environment.Newline的newLine属性
Peter

5
现在,我重新阅读了自己的陈述,我想知道为什么我自己也想知道我在想什么
彼得

Answers:



88

从Java 7开始:

System.lineSeparator()

Java API:System.lineSeparator

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


60

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

编写文本时,应比在运行平台上更关注文件的使用方式。例如,如果您希望人们在Windows记事本中读取文件,则应使用“ \ r \ n”,因为它只能识别一种分隔符。


OSX之前的Mac(“ \ r”)仍在实际使用吗?还是说可以安全地“忘记”它是真的吗?
Pacerier'3

6
好吧,无论机器本身是否仍在使用,您都必须假设那里仍然有在OSX之前的Mac上编写的文档。我知道将其缩短(?:\r?\n|\r)到很有诱惑力(?:\r?n),但是不,我认为这并不安全。(?:\r\n|[\r\n])无论如何,我还是比较喜欢。我知道这是更多角色,但看起来更整洁。:D而且,如果您不在乎消耗了多少行分隔符,也[\r\n]+可以正常工作。
艾伦·摩尔
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.