Вы можете попытаться использовать String#matches
для идентификации интересующих линий:
List<String> names = new ArrayList<>();
while (scanner.hasNextLine()) {
String line = scanner.nextLine();
if (line.matches("^Name:.*")) {
names.add(line.replaceAll("^Name:\\s+", ""));
}
}
Идея состоит в том, чтобы захватить все строки, которые начинаются с Name:
, а затем удалить префикс Name:
,оставив желаемое содержимое.
Объяснение используемого регулярного выражения:
^ from start of string (line)
Name: match text 'Name:'
\\s+ followed by any number of spaces (or other whitespace)
Итак, удалив ^Name:\\s+
, мы должны оставить только информацию об имени слева от этого.
Редактировать:
Если, например, содержимое вашего имени на самом деле было именем и фамилией, то каждая строка будет выглядеть примерно так:
Name: George Washington
В этом случае, если формат будет фиксированным, мы могли бы попытаться использовать String#split
для выделения имени и фамилии:
String[] parts = line.split("\\s+");
String first = parts[1];
String last = parts[2];
// then store first and last in separate lists
То, что вы будете делать, точно зависит от ваших фактических данных.Здесь много крайних случаев.Возможно, некоторые строки имеют только одно имя, или некоторые строки имеют отчество, инициал, суффикс и т. Д. Это просто для того, чтобы дать вам общее представление.