2013-05-25 29 views
0

我有ArrayList中,看起來像this拆分的ArrayList上的塊

我需要提取此基礎上我輸入一個字符串數據。例如,如果我輸入systém,我應該得到這樣的輸出:

001 (07.01.01) programovací systém (m) 
systém (m) programovaniaCHCTeMa (f) riporpaMMupoBaiiHM 
programming system; programming support environmentsystème (m) de programmationProgrammiersystem (n) 
nezbytné programové vybavení potrebné pro používání jed-noho nebo vice programovacích jazyku 

如果鍵入komentár,我應該得到:

004 (07.01.08) komentár (m); poznámka (í) 
komentár (m); poznámka (f) 
KOMMeHTapHH (m) 
comment; remark; note; (computer program) annotationcommentaire (m) 
Kommentar (m) 
popis*, odkaz n. vysvetlení pripojené k príkazúmve zdrojo-vémprogramu (které se neprojevuje v cílovém programu) 

但我不知道如何解決它。我試圖通過第一個數字來識別塊,但是我的輸出只與這個數字一致。這裏是我的代碼:

Pattern pattern = Pattern.compile("[0-9]+.*"); 
    Matcher m; 

    String str = "systém"; 

    for (int i = 0; i < al.size(); i++) { 
    String line = al.get(i).toString(); 
    m = pattern.matcher(line); 

    if(m.matches() && line.contains(str)) 
     System.out.println(line); 
     //...Whats next? 

    } 
} 
+1

請問您能澄清一下算法嗎?謝謝。 – user

+0

從這個ArrayList我需要得到的文本塊。這是有關計算機資料的詞彙。我包含主要表達式(systm或komentár),語言和表達式的解釋。我需要識別這些塊的算法。第一個塊從00開始。第二個塊從002開始。但是我必須保持文本的格式化。如果我鍵入systm(輸入處理程序尚未實現),它必須識別第一個塊001並寫入上面的4行。通過輸入komentár,它必須識別004塊,並用6行打印輸出。 – razorMC

回答

0

它看起來像你的正則表達式是錯誤的。請嘗試

String str = "systém"; 
Pattern pattern = Pattern.compile(str); 
Matcher m; 


for (int i = 0; i < al.size(); i++) { 
    String line = al.get(i).toString(); 
    m = pattern.matcher(line); 

    if(m.matches() && line.contains(str)) 
     System.out.println(line); 
    //...Whats next? 
}