java - 如何从 Java 中的 txt 文件读取 2 个特定列?

标签 java regex hashmap delimiter file-handling

如何从 txt 文件中读取 2 个特定列(第一列和第三列)。主要问题是列由不同的分隔符分隔(我想忽略其中写入 (base 16) 的第二列)。另外我如何跳过列标题。 txt 文件如下所示:

IOU/AB-L                                                    Organization                                 
company_id                                                  Organization                                 
                                                            Address                                      

D0-AB-DB   (hex)             Ahenhen ViewAt Technology Co.,Ltd. 
D0ABDB     (base 16)         Ahenhen ViewAt Technology Co.,Ltd. 
                             9A,Microprofit,6th Gaoxin South Road, High-Tech 
                             Industrial Park, Nanshan, henzhen.
                             henzhen  guangdong  51867
                             DN

42-05-F5   (hex)            Integrated Technology (Malaysia) Sdn. Bhd.
4205F5     (base 16)        Integrated Technology (Malaysia) Sdn. Bhd.
                            Phase 1, Bayan Aepas FIZ
                            Bayan Lepas  Penang  11923
                            NY

我正在尝试使用以下代码。但它不起作用。

    String line;
    BufferedReader reader = new BufferedReader(new FileReader(path));
    while ((line = reader.readLine()) != null) {
        String[] parts = line.split("   ", 3);
        if (parts.length >= 3) {
            String key = parts[0];
            String value = parts[2];
            System.out.println("Key value pair is " + key + "   " + value);
            map.put(key, value);
        } else {
            System.out.println("ignoring line: " + line);
        }
    }

所以基本上我想在第一行读取 D0-AB-DBAhenhen ViewAt Technology Co.,Ltd. ,之后我想读取 42-05-F5Integrated Technology (Malaysia) Sdn. Bhd. 在第二行。

在这种情况下我应该使用什么正则表达式。示例代码会很有帮助。

提前致谢!!

最佳答案

按如下方式重写 while 循环:

    while ((line = reader.readLine()) != null) {
        String[] parts = line.split("\\((hex)\\)", 3);

        if (parts.length >= 2) {
            String key = parts[0].trim();
            String value = parts[1].trim();
            System.out.println("Key value pair is :" + key + "   " + value);
            map.put(key, value);
        } else {
            System.out.println("ignoring line: " + line);
        }
    }

关于java - 如何从 Java 中的 txt 文件读取 2 个特定列?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48335041/

相关文章:

Java TreeMap 基于值排序去除重复值

java - Docker 容器中的 Spring 模板

java - Selenium 网络驱动程序 : Java: NoSuchElementException: Unable to locate element: {"method" :"xpath" ,"selector" :"//div[@id=' manage_area']/ul/li/div[2]"}

python - 正则表达式结束对特定字符的搜索

mysql - 如何在 R 的 sqlQuery 函数中使用 REGEXP

java - 有没有办法填充 HashMap 中的值以删除文本文件中的特定值?

Java:通过匹配 LinkedHashMap 中的相似键来复制值

java - 验证队列消息

windows - 从 Java Applet 获取 Windows Service Pack 版本?

java - 正则表达式 - 我需要替换所有数字但特定的 3 位数字