2016-08-08 2 views
1

Вот что я ищу сделать, я хотел бы извлечь каждое предложение, которое содержит «3G» из вики выдержки нижеКак извлечь каждое предложение, которое содержит определенное слово

«Есть девять поколений iPhone модели, каждая из которых сопровождается одним из девяти основных выпусков iOS. Первоначальным iPhone первого поколения был телефон GSM и установленные дизайнерские прецеденты, такие как размещение кнопок, которое сохранялось во всех выпусках и размер экрана, поддерживаемый для следующих четырех итераций IPhone 3G добавили возможности сотовой сети 3G и местоположение A-GPS. IPhone 3GS добавил более быстрый процессор и камеру с более высоким разрешением, которая могла записывать видео на 480p. IPhone 4 отличался более высоким разрешением 960 × 640 ».

Я знаю, что мне нужно использовать регулярные выражения и метод .split(). Но как мне пройти цикл, чтобы получить все экземпляры 3G?

+0

[ '\ б [AZ] [AZ] * [^.] *? 3G [^.] * \.'] (Https://regex101.com/r/eK6hW2/1) работает ваш пример, предполагающий предложения, не имеет DOT. – anubhava

+0

'Stream.of (str.split (" \\. \\ s * ")). Filter (x -> x.contains (" 3G ")). ForEach (System.out :: println);' –

+0

Please покажите код, который вы пробовали, и объясните, что не работает. –

ответ

0

Я бы с чем-то вроде этого:

import java.util.regex; 
import java.util.ArrayList; 

ArrayList<String> getThreeG(String text) { 
    String[] parts = text.split("."); 

    Pattern r = Pattern.compile("3G"); // Feel free to make it more complicated 
    ArrayList<String> relevant; 

    for (int i = 0; i < parts.length; i++) { 
     Matcher m = r.matcher(parts[i]); 
     if (m.find()) { 
      relevant.add(parts[i]); 
     } 
    } 

    return relevant; 
} 

Если вы ищете только для предложений, которые имеют «3G» на своей собственной, заменить регулярное выражение в примере с "\\s3G\\s".

1

Вы можете использовать split и contains.

String[] sentArray = input.split("\\."); 
List<String> output = new ArrayList<String>(); 
for (String sentence : sentArray) { 
    if (sentence.contains("3G")) { 
     output.add(sentence); 
    } 
}  
System.out.println(">>output=" + output); 
Смежные вопросы