如何从txt文件中读取Java中的2个特定列?
如何从.txt文件中读取2个特定列第一列和第三列。这些列由不同的分隔符分隔。我想忽略第二列,其中写入了基数16。还有,如何跳过列标题。.txt文件如下所示:如何从txt文件中读取Java中的2个特定列?,java,delimiter,file-handling,Java,Delimiter,File Handling,如何从.txt文件中读取2个特定列第一列和第三列。这些列由不同的分隔符分隔。我想忽略第二列,其中写入了基数16。还有,如何跳过列标题。.txt文件如下所示: IOU/AB-L Organization company_id Organ
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);
}
}
所以基本上我想在第一行读D0-AB-DB和Ahenhen ViewAt Technology Co.,Ltd.,然后在第二行读42-05-F5和Integrated Technology Malaysia Sdn.Bhd
有人能推荐一些编辑吗?
在这种情况下,我应该使用什么正则表达式
提前谢谢 您可以使用\s+而不是在分割方法中使用空格来分割字符串 我很确定你会在这里找到你想要的: 他们的关键是在至少2个空格上拆分\s{2,},使用拆分限制4,并使用布尔值来确定是否已通过标题,或是否忽略了详细信息行: 布尔passedHeader=false; 布尔skipDetail=false; 弦线; BufferedReader reader=新建BufferedReadernew FileReaderpath; 而line=reader.readLine!=空的{ line=line.trim; if!passedHeader{//skip header 如果行是空的{ passedHeader=true; } 持续 } 如果跳过详细信息{//跳过详细信息 如果行是空的{ skipDetail=false; } 持续 } 如果line.isEmpty{//跳过空行 持续 } String[]parts=line.split\\s{2,},4; 如果parts.length>=3{ 字符串键=部件[0]; 字符串值=零件[2]; System.out.printlkey:\+key+\Value:\+Value+\; }否则{ System.out.PrintLn遇到以下意外格式行:; System.out.printlnline; } skipDetail=true; } 注: 我重新格式化了控制台输出,添加了双引号以清楚地显示所有内容 我添加了一个else,用于当行的格式出乎意料时,任何一行都会发生类似于D0-AB-DB hex的情况,D0-AB-DB和hex之间只有一个空格 下面是拆分限制为3,输入行为4列或更多列时会发生的情况。所有额外的列都包含在第三列的文本中。i、 e.具有以下特点:
D0-AB-DB (hex) Ahenhen ViewAt Technology Co.,Ltd. Column 4 text
你会得到:
Key: "D0-AB-DB" Value: "Ahenhen ViewAt Technology Co.,Ltd. Column 4 text"