2016-03-19 15 views
1

ここは私のコードです。 [... 020406,020407]と私はそのようなものであるファイル内のパターンを探しています:私は次のようになります日付のArrayListに日付を保存はパターンがArrayList文字列変数と一致していません

c001z020102 
c002z020103 
... 

コード:

private void printReaderContent(BufferedReader reader) throws IOException { 
    String line = null; 

    for(String tmp : dates) { 
     while ((line = reader.readLine()) != null) { 
      if (line.matches("[c]{1}[0-9]{3}[z]{1}" + tmp)) { 
       xmlCodes.add(line); 
      } else { 
      } 
     } 
    } 
    System.out.println(xmlCodes); 
} 

をだから私は、私のコードのようなマッチメソッドがあり、私はこのパターンを組み合わせるためにtmp変数を追加しようとしているので、ファイルから選択した結果を得ることができます。 [c] {1} [0-9] {3} [z] {1} [0-9] {2} [0-9] {2} [0-9] {2}のような標準パターンを使用すると、それは作業だが、毎回私が代わりにTMPを入れて、私は空白のArrayListのは、私が間日の量を計算するjodaTimeを使用していると私は日付のArrayListに格納する:(返されます:

public void countDatesBetween() 
{ 
    int days = Days.daysBetween(dataPierwsza, dataOstatnia).getDays(); 
    for (int i = 0; i <= days; i++) 
    { 
     DateTime d = dataPierwsza.withFieldAdded(DurationFieldType.days(), i); 
     dates.add(d.toString("yyMMdd"));    
    } 
} 

私は複数行を持つファイルを持っていますc001z040206。ユーザーは2014年6月6日と2014年6月8日のように2つの日付を入れます---> coundDatesBetweenは、次のような配列リスト(dates.toString( "yyMMdd")を作成します:[140606、140607 、140608]次に、 "[c] {1} [0-9] {3} [z] {1}"であるc001zのパターンでファイルを検索し、基本的に反復しているtmpから選択した日付を取得したいdates ArrayList。だから、例えば次のようになるはずです:c001z140606 --->ファイル内でそれを見つけ、xmlCodesに戻りますString ArrayLisしかし、それは空白のarraylistを返すだけです。

+1

あなたがやろうとしていることや見ていることはわかりません。[mcve]であなたを助けるのは簡単でしょう。 (特に、countDatesBetweenは他の質問と何が関係しているのかわかりません) –

+3

コメントに情報を入れないでください。代わりに質問を常に更新する – GhostCat

答えて

0

問題は、line.matches()ステートメントのパターンとは関係ありません。内側/外側のループを交換する必要があります。そうしないと、最初の日付に一致するように試みます。

private void printReaderContent(BufferedReader reader) throws IOException { 
    String line = null; 

    while ((line = reader.readLine()) != null) { 
     for (String tmp : dates) { 
      if (line.matches("[c]{1}[0-9]{3}[z]{1}" + tmp)) { 
       xmlCodes.add(line); 
       break; 
      } 
     } 
    } 
    System.out.println(xmlCodes); 
}