Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何从Java中的txt文件中读取2个特定列?_Java_Regex_Hashmap_Delimiter_File Handling - Fatal编程技术网

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

如何从Java中的txt文件中读取2个特定列?,java,regex,hashmap,delimiter,file-handling,Java,Regex,Hashmap,Delimiter,File Handling,如何从txt文件中读取2个特定列(第1列和第3列)。主要的问题是,这些列由不同的分隔符分隔(我想忽略第二列,其中写入了(base 16)。还有,如何跳过列标题。 txt文件如下所示: IOU/AB-L Organization company_id

如何从txt文件中读取2个特定列(第1列和第3列)。主要的问题是,这些列由不同的分隔符分隔(我想忽略第二列,其中写入了(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-DB
Ahenhen ViewAt Technology Co.,Ltd.
,然后我想读第二行的
42-05-F5
集成技术(马来西亚)有限公司的

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


提前谢谢

重新编写while循环,如下所示:

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
while((line=reader.readLine())!=null){
String[]parts=line.split(“\\((十六进制)\\)”,3);
如果(零件长度>=2){
字符串键=零件[0]。修剪();
字符串值=零件[1]。修剪();
System.out.println(“键值对为:“+Key+”“+value”);
map.put(键、值);
}否则{
System.out.println(“忽略行:+行”);
}
}

请编辑您的问题,并发布实际问题的最低表示形式。至少给出您对输入结果的预期(不清楚您想要什么)。基本上,我想阅读
D0-AB-DB
Ahenhen ViewAt Technology Co。,第一行的
和第二行的
42-05-F5
集成技术(马来西亚)有限公司