使用制表符分隔符拆分文本文件中的行 - Java

时间:2017-11-04 18:18:23

标签: java file split delimiter

我有一个包含单词及其相应含义的文本文件,每个单词含义对由两个制表符空格分隔

Cat     Animal with four legs
Bus     Mean of transport
NUST        University in asia
Corolla     Car manufacturing company
Chemistry       Science subject
Cricket     Game played with bat and ball
Camouflage      Hide or disguise the presence of any object

我想读取每一行并用分隔符\\t\\t拆分它们,这样我就可以将单词与它们的含义区分开来。下面是我写的这个函数

public static void readFile() {
     try{
         String line;
         String[] lineparts;
         Scanner pw = new Scanner(new BufferedReader(new FileReader("dictfile.txt")));

         while(pw.hasNext()) {
             line = pw.nextLine();
             lineparts = line.split("\\t\\t");
             System.out.println(lineparts[0]);
         }

     }catch(IOException ex){

         System.out.println(ex);
     }
}

但输出并不像我预期的那样。从lineparts方法接收返回字符串的名为split()的数组应该在其零索引处包含一个单词,并且该单词在其第一个索引处含义但实际输出不同。

实际输出

Cat     Animal with four legs
Bus     Mean of transport
NUST        University in asia
Corolla     Car manufacturing company
Chemistry       Science subject
Cricket     Game played with bat and ball
Camouflage      Hide or disguise the presence of any object

预期输出

Cat  
Bus     
NUST        
Corolla     
Chemistry       
Cricket     
Camouflage

我在这里做错了什么以及如何实现预期的产出?

2 个答案:

答案 0 :(得分:2)

您的某些文字以双标签分隔,但有些标签也用单个标签分隔。 split()方法中的正则表达式应如下所示:

ptr.right

答案 1 :(得分:1)

您不必使用转义序列\\t\\t,而只需要标签\t\t。如果您使用转义序列,则表示您要将带有字符\ t的行拆分为分隔符。