2013-10-22 48 views
1

好吧,我已經閱讀了大量關於如何處理從文本文件中讀取行並將它們分開的示例,但是我不太確定我知道如何在我的情況下執行此操作。我有一個基本分爲三列如下文件:Java - 從文本中讀值

  START 5000 
     FIND A 
     PLUS B 
     SAVE C 
     STOP 
A,  INT 69 
B,  INT -420 
C,  CRAZY 008484342 

我所試圖做的是閱讀中包含上述信息這.txt文件。我認爲逐行讀取文件是最好的,然後將它分成正確的列。我遇到的問題是第一列並不總是在這裏。這是一個可選的。如果他們都填寫,IM幾乎可以肯定我可以只使用使用類似

String[] array1 = myLine.split(","); 

另一個想法我是分割依據就行了,「當時的拆分再次以‘行’,但林不確切地確定如何做到這一點。也許像財產以後

String[] array1 = myLine.split(","); 
String[] array2 = array1[1].split(" "); 

此外,有沒有隻讀取文件中的每一行存儲到像(字符串,字符串字符串),然後只檢查整數VS串什麼辦法?也許在嘗試捕捉?或者喜歡:

Scanner input = new Scanner(File); 
     while(input.hasNext()){ 
      String str = input.next(); 
      try{ 
       b = Integer.parseInt(str); 
      } 

我不知道這是否是硬得像使它任務作爲即時通訊,但也許這樣......這個話題的任何幫助將不勝感激。

找了一些更多的代碼後,我有以下開始:所以用這個

 public static void main(String[] args) { 

    String file ="TEST.txt"; 

     try{ 

      FileReader input = new FileReader(file); 
      BufferedReader bufferReader = new BufferedReader(input); 

      String line; 

      while ((line = bufferReader.readLine()) != null) { 


       // Is this where I would attempt to split the lines? 
       System.out.println(line); 

      } 

      bufferReader.close(); 

     }catch(Exception e){ 

      System.out.println("Error while reading file line by line:" + e.getMessage());      
     } 
    } 

} 

,我成功地讀取文件並顯示信息返回到輸出控制檯。現在爲分隔線......我會發布我的工作,因爲我去,任何幫助和或建議,將不勝感激!還要感謝那些已經評論過幫助分裂叮咬的人,現在就試圖嘗試這個!

回答

0

使用split(" +")這將分裂任何數量的空間。這是因爲split處理正則表達式。如果你想分割任何類型的空白,你也可以使用split("\\s+)。獲取數組後,檢查它是否有2或3個元素並相應地處理它。

+0

添加另一個引號來結束第二個例子中的字符串。 –

1

您可以組合兩種表述,僅檢查了數組的長度。例如爲:

String[] array = line.trim().split("[, ]+"); 
switch(array.length) { 
    case 2: 
     // do something 
     break; 
    case 3: 
     // do something 
     break; 
    default: 
     // something wrong 
     break; 
} 

在線路的trim()是用於第一元件陣列中避免空字符串。

+0

如果我這樣做了,那麼STOP的行不會是長度爲1的行嗎? – NerdsRaisedHand

+0

如果您正在使用掃描儀,則不會有更多線條。如果你最後有空行,你可以在if(line == null || line.trim()。isEmpty()){/ * stop * /}'上停下來。 –