我已经对文件进行了排序,我需要进行以下模式匹配。我读取该行,然后与它后面的行进行比较或进行模式匹配,如果匹配,则在该行的逗号后插入我用来匹配的字符串,然后移至下一行。我是 Java 的新手,对从 Open CSV 到 BufferedReader 的选项不知所措。我打算遍历文件直到它到达结尾。我可能总是有空白并且在引号中有日期。文件大小约为 100 MB。 我的文件有类似
的数据ABCD
ABCD123
ABCD456, 123
XYZ
XYZ890
XYZ123, 890
预期输出为
ABCD, ABCD
ABCD123, ABCD
ABCD456, 123, ABCD
XYZ, XYZ
XYZ890, XYZ
XYZ123, 890, XYZ
不确定最佳方法。你能帮帮我吗?
最佳答案
要打开文件,您可以使用 File 和 FileReader 类:
File csvFile = new File("file.csv");
FileReader fileReader = null;
try {
fileReader = new FileReader(csvFile);
} catch (FileNotFoundException e) {
e.printStackTrace();
}
您可以使用 Scanner 获取文件的一行:
Scanner reader = new Scanner(fileReader);
while(reader.hasNext()){
String line = reader.nextLine();
parseLine(line);
}
您想解析这一行。为此,您必须学习Regex使用 Pattern 和 Matcher 类:
private void parseLine(String line) {
Matcher matcher = Pattern.compile("(ABCD)").matcher(line);
if(matcher.find()){
System.out.println("find: " + matcher.group());
}
}
要查找同一行的下一个模式,可以重用 matcher.find()。如果找到某个结果,它将返回 true,您可以使用 matcher.groud(); 获得此结果;
关于排序文件中的 Java 字符串匹配和相似数据分组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25391459/