2016-03-19 15 views
1

işte benim kodum. [... 020406,020407] ve ben böyle bir şey olan dosyalarda desen arıyorum: Ben tarih ArrayList tarih benziyor hangi depolamak, ArrayList dize değişkeni ile desen eşleşiyor

c001z020102 
c002z020103 
... 

Kodu:

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

yüzden kodumda olduğu gibi bir yöntemle eşleşiyor ve bu kalıbı birleştirmek için tmp değişkeni eklemeye çalışıyorum, böylece dosyadan seçtiğim sonuçları alabilirim. [C] {1} [0-9] {3} [z] {1} [0-9] {2} [0-9] {2} [0-9] {2} gibi standart kalıp kullanırsam işe yaradı, ama her şey yerine ben boş arrayList döndü :(Ben jodaTime ben tarihleri ​​depolamak ve arasındaki gün miktarını hesaplamak için kullanıyorum olsun arrayList tmp koydu:

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

ben birden hatları ile bir dosya var belirli bir desen, örneğin: c001z040206. Kullanıcı 2014-06-06 ve 2014-06-08 --- gibi 2 tarih koyar.> coundDatesBetween bir arrayList (date.toString ("yyMMdd") oluşturur; şöyle görünür: [140606, 140607 (140608]. Daha sonra, "[c] {1} [0-9] {3} [z] {1}" şeklindeki c001z için bu kalıpta dosya aramak istiyorum ve seçili tarihi temelde yinelenen tmp'den almak istiyorum tarihler ArrayList: Yani şöyle olmalı: c001z140606 ---> dosyayı bul ve xmlCodes String ArrayLis'e dön t, ama sadece boş arraylist dönüyor.

+1

Yapmaya çalıştığınız veya gördüğünüz şey tam olarak bana göre değil - size yardımcı olmak daha kolay olurdu. (Özellikle, 'countDatesBetween' sorununun geri kalanıyla ne ilgisi olduğunu göremiyorum.) –

+3

Yorumlara bilgi eklemeyin. Sorunuzu her zaman güncelleyin – GhostCat

cevap

0

Sorununuzun, line.matches() ifadesindeki desenle ilgisi yoktur. İç/dış döngüyü değiştirmelisiniz, aksi takdirde sadece ilk tarihi eşleştirmeye çalışacaksınız.

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