gpt4 book ai didi

java - 使用 java 写入 Mac 和 Windows 文件

转载 作者:行者123 更新时间:2023-12-01 18:06:19 25 4
gpt4 key购买 nike

我在 Windows 中写入文件时遇到问题。我的 JAVA 程序在 Mac 中运行良好,但在 Windows 中却无法运行。

这是在 Windows 中执行不同的代码:

String string = textArea.getText();

if (string.contains(System.getProperty("line.separator"))) {
notatet = string.replace(System.getProperty("line.separator"), "<line.separator>");
}

当我将此字符串保存到 MAC 中的 txt 文件时,我得到:

Line1<line.separator>Line2<line.separator><line.separator>Line3

但是当我将此字符串保存到 WINDOWS 中的 txt 文件时,我得到:

Line1
Line2

Line3

现在我显然想要 Mac 选项,这就是我的目标。我应该如何处理我的代码才能使其在两个/所有操作系统中运行?

最佳答案

问题是你可能有 \r\n或有\n作为字符串中的行分隔符。这与您的 if 语句不匹配。只需使用正则表达式和replaceAll 方法即可。

请参阅以下示例:

import java.util.*;
import java.lang.*;
import java.io.*;

/* Name of the class has to be "Main" only if the class is public. */
class Ideone
{
public static void main (String[] args) throws java.lang.Exception
{
String string = "Test\ntest\r\ntest";
String n = string.replaceAll("[\\r\\n]+", "<line.separator>");
System.out.print(n);
}
}

输出:测试测试测试

Running Example

编辑

案例Test\n\ntest\r\ntest上面的代码工作不正确。将该行替换为以下行的正则表达式:

    String n = string.replaceAll("\\n", "<line.separator>");
n = n.replaceAll("\\r", "");

如果有多个 \r\n\n看来替换品可以正常工作。因为所有案例都包含\n这些首先替换为 <line.separator>之后行 n.replaceAll("\\r", "");进行了清理并删除了不必要的\r .

关于java - 使用 java 写入 Mac 和 Windows 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36172841/

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