排序文件中的 Java 字符串匹配和相似数据分组

标签 java regex file string-matching

我已经对文件进行了排序,我需要进行以下模式匹配。我读取该行,然后与它后面的行进行比较或进行模式匹配,如果匹配,则在该行的逗号后插入我用来匹配的字符串,然后移至下一行。我是 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/

相关文章:

java - CXF JAX-WS 无法将参数发送到 Web 服务

regex - 使用 xPath 还是正则表达式?

java - 将文件复制到 Assets 文件夹

Java:aix中的文件lastmodified itimestamp

java - android textview 变量

java net URL 连接超时

javascript - 在 TextBox OnKeyPress 上使用 RegEx 无法按键盘中的 Tab 按钮

c# - 用于在数字模式和冒号或换行符之间提取字符串的正则表达式

java - 在java中重命名文件

java - 无状态 session bean 中的高效 JDBC 连接管理