2016-03-19 3 views
1

Hier ist mein Code. Ich speichere Datum in Daten Arraylist, die wie folgt aussieht: [020406,020407 ...] und ich bin auf der Suche Muster in Dateien, die so etwas wie das ist:passt Muster mit ArrayList String-Variable funktioniert nicht

c001z020102 
c002z020103 
... 

Code:

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); 
} 

Also ich Habe eine Match-Methode wie in meinem Code und ich versuche tmp Variable hinzuzufügen, um dieses Muster zu kombinieren, damit ich ausgewählte Ergebnisse aus meiner Datei bekommen kann. Wenn ich Standardmuster wie [c] {1} [0-9] {3} [z] {1} [0-9] {2} [0-9] {2} [0-9] {2} verwende, es funktioniert, aber jedes Mal habe ich tmp statt i leere Arraylist zurückerhalten :(ich verwende jodaTime Anzahl der Tage zwischen berechnen und speichere ich es in Daten 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"));    
    } 
} 

ich habe eine Datei mit mehreren Zeilen B. c001z040206. Der Benutzer setzt 2 Daten wie 2014-06-06 und 2014-06-08 ---> cundDatesBetween erstellt eine ArrayList (dates.toString ("yyMMdd"), die so aussieht: [140606, 140607 , 140608]. Dann möchte ich mit c001z durch diese Datei suchen, die "[c] {1} [0-9] {3} [z] {1}" ist und ein ausgewähltes Datum von tmp erhält, das im Grunde iteriert Dates ArrayList: So sollte es beispielsweise so sein: c001z140606 ---> finde es in der Datei und kehre zu xmlCodes String ArrayLis zurück t, aber es ist nur eine leere Arraylist.

+1

Es ist nicht wirklich klar zu mir, was Sie versuchen zu tun oder was Sie sehen - es wäre einfacher, Ihnen zu helfen, mit einem [MCVE]. (Insbesondere kann ich nicht sehen, was "countDatesBetween" mit dem Rest der Frage zu tun hat.) –

+3

Informationen nicht in Kommentare einfügen. Aktualisiere deine Frage stattdessen immer – GhostCat

Antwort

0

Ihr Problem hat nichts mit dem Muster in der line.matches() Aussage zu tun. Sie müssen die innere/äußere Schleife tauschen, sonst versuchen Sie nur das erste Datum zu finden.

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); 
} 
Verwandte Themen