gpt4 book ai didi

java - Java 中的可移植换行符转换

转载 作者:行者123 更新时间:2023-12-02 10:58:58 28 4
gpt4 key购买 nike

假设我有一个字符串,它由几行组成:

aaa\nbbb\nccc\n (in Linux) or aaa\r\nbbb\r\nccc (in Windows)

我需要将字符 # 添加到字符串中的每一行,如下所示:

#aaa\n#bbb\n#ccc (in Linux) or #aaa\r\n#bbb\r\n#ccc (in Windows)

什么是最简单且可移植(Linux 和 Windows 之间)的 Java 方法?

最佳答案

使用line.separator系统属性

String separator = System.getProperty("line.separator") + "#"; // concatenate the character you want
String myPortableString = "#aaa" + separator + "ccc";

这些属性有更详细的描述here .

如果您打开 PrintWriter 的源代码,您会注意到以下构造函数:

public PrintWriter(Writer out,
boolean autoFlush) {
super(out);
this.out = out;
this.autoFlush = autoFlush;
lineSeparator = java.security.AccessController.doPrivileged(
new sun.security.action.GetPropertyAction("line.separator"));
}

它获取(并使用)系统特定的分隔符来写入OutputStream

您始终可以在属性级别设置它

System.out.println("ahaha: " + System.getProperty("line.separator"));
System.setProperty("line.separator", System.getProperty("line.separator") + "#"); // change it
System.out.println("ahahahah:" + System.getProperty("line.separator"));

打印

ahaha: 

ahahahah:
#

所有请求该属性的类现在都将获得 {line.separator}#

关于java - Java 中的可移植换行符转换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18385865/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com