2017-12-19 35 views
-2

txtファイルから特定のデータを見つける必要があります。コードを参照してください。bufferedReaderで特定の行を読み取る方法

while ((line = bufferedReader.readLine())!= null) { 
    //pokial obsahuje string zapíš do array 
    if (line.toLowerCase().contains("list c.")) { 
     parsedData.add(line); 
    } 
    if(line.toLowerCase().startsWith("re")) { 
     parsedData.add(line);//add found data to array 
     //i need to access and save second and third line after this one 
    } 

    System.out.println(line); 
} 

「再」で始まる行が見つかると、この特定の行の後に2行目と3行目を保存する必要があります。ここ

+0

これを達成するために何を試みましたか、それはなぜ機能しませんでしたか? – Henry

+0

私はbufferedReader.readLine()を試しました。私は配列に行を追加した後にデータを複製しただけで、同じ行が2回読み取られる – h0neybaLL

答えて

1

あなたの質問から私は確信していませんが、あなたの目標は、ラインの開始時に受信した後に次のカップル(例えば2)を得ることである場合、あなたはいくつかのフラグを持つことによってそれを行うことができます。

boolean needsToConsider = false; 
     int countOfLines = 2; 
     while ((line = bufferedReader.readLine())!= null) { 

      if(needsToConsider && countOfLines > 0){ 
       // add here 
       countOfLines--; 
       if(countOfLines == 0) 
        needsToConsider = false; 
      } 
      //pokial obsahuje string zapíš do array 
      if (line.toLowerCase().contains("list c.")) { 
       parsedData.add(line); 
      } 
      if(line.toLowerCase().startsWith("re")) { 
       parsedData.add(line);//add found data to array 
       //i need to access and save second and third line after this one 
       needsToConsider = true; 
      } 
0

単純なアプローチは、ちょうどそれらの2行目と3行目を打つのを追跡するためにカウンタを使用することがあります

int counter = 0; 

while ((line = bufferedReader.readLine())!= null) { 
    if (line.toLowerCase().contains("list c.")) { 
     parsedData.add(line); 
    } 
    else if (line.toLowerCase().startsWith("re")) { 
     parsedData.add(line); 
     counter = 2; 
    } 
    else if (counter > 0) { 
     // add second and third lines after "re" here 
     parsedData.add(line); 
     --counter; 
    } 
} 

より高度なアプローチは、関心のテキスト部分全体を読み込むことができ、あなたが望むものを抽出するために正規表現マッチャーを使用します。