gpt4 book ai didi

java - 删除文本文件中应仅包含数字的所有字符

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

我找到了一个java程序,它可以将java中的两个文本文件相互比较,并使其列出不在两个文本文件中的所有行/条目。

package Exercise1;

import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;
import java.util.ArrayList;

public class main {

public static void main(String[] args) throws IOException {

String first = "migratielijst.txt";
String second = "complete.txt";
BufferedReader fBr = new BufferedReader(new FileReader(first));
BufferedReader sBr = new BufferedReader(new FileReader(second));

ArrayList<String> strings = new ArrayList<String>();

while ((first = fBr.readLine()) != null) {
strings.add(first);
first.replaceAll("[^0-9.]", "");
}
fBr.close();

while ((second = sBr.readLine()) != null) {
if (!(strings.contains(second))) {
System.out.println(second);
}
}
sBr.close();
}
}

我发现删除所有字符的行(如下)没有执行我想要的操作。

first.replaceAll("[^0-9.]", "");

假设文本文件如下所示:

8271910
8271911
//8271912
8271913
8271914
8271915

它所比较的​​文本文件如下所示:

8271910
8271911
8271912
8271913
8271914
8271915

它将列出 8271912,因为它在第一个文本文件中被注释掉。现在,如果我修改第一个文本文件并在其前面添加一个名称,我希望我的程序删除这些字符(在比较时不考虑它们)。示例:

Anya 8271910
8271911
//8271912
8271913
8271914
8271915

问题是我的程序返回这个:

8271910
8271912

我该如何解决这个问题?

最佳答案

您的问题来自此行:

strings.add(first);
first.replaceAll("[^0-9.]", "");

在 Java 中,字符串是不可变的。因此,您要做的就是将原始字符串添加到列表中,然后创建一个具有所需修改的新字符串。但是新字符串在您的程序中被忽略。

这是一个快速修复:

strings.add(first.replaceAll("[^0-9.]", ""));

关于java - 删除文本文件中应仅包含数字的所有字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49939899/

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