2013-11-26 34 views
2

我想在读取我正在使用的txt文件时将每行分割成两个单独的字符串,并稍后将它们存储在HashMap中。但现在我似乎无法正确读取文件。这是我的文件的一小部分看起来像:使用BufferedReader将行分割为两个字符串

.... 
CPI  Clock Per Instruction 
CPI  Common Programming Interface [IBM] 
.CPI  Code Page Information (file name extension) [MS-DOS] 
CPI-C  Common Programming Interface for Communications [IBM] 
CPIO  Copy In and Out [Unix] 
.... 

这是我的代码是什么样子:

try { 
     BufferedReader br = new BufferedReader(new FileReader("akronymer.txt")); 
     String line; 

     String akronym; 
     String betydning; 
     while((line = br.readLine()) != null) { 
      String[] linje = line.split("\\s+"); 

      akronym = linje[0]; 
      betydning = linje[1]; 

      System.out.println(akronym + " || " + betydning); 
     } 
    } catch(Exception e) { 
     System.out.println("Feilen som ble fanget opp: " + e); 
    } 

我要的是存储在一个字符串的缩写和定义另一个字符串

+0

那么,什么阻止了你? –

+1

@PeterLawrey我认为,OP的方式是将'whitespaces'上的字符串'分开'。 – Smit

+0

@Smit对我来说看起来很好。 –

回答

4

问题是定义中的空白被解释为附加字段。你只得到了定义的第一个字在linje[1]因为换句话说在其他数组元素:

["CPI", "Clock", "Per", "Instruction"] 

供应limit参数在two-arg overload of split,停在2场:

String[] linje = line.split("\\s+", 2); 

例如​​将是CPIlinje[1]将是Clock Per Instruction

+0

谢谢!代码正常工作 – patski

4

如果你想限制你的拆分只有两个部分,然后使用split("\\s+", 2)。现在你在每一个空白处分割你的行,所以每个单词都存储在不同的位置。