2013-11-26 59 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)。現在你在每一個空白處分割你的行,所以每個單詞都存儲在不同的位置。