2013-05-25 1 views
0

У меня есть ArrayList, который выглядит как thisSplit 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 мне нужно получить блок текста. Это был лексикон о некоторых компьютерах. Я содержит основное выражение (systém или komentár), языки и объяснение выражения. Мне нужен алгоритм, который распознает эти блоки. Первый этап начинается с 001. Второй блок начинается с 002. Но я должен продолжать формировать текст. Если я набираю systém (обработчик ввода еще не реализован), он должен распознать первый блок 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? 
} 

 Смежные вопросы

  • Нет связанных вопросов^_^