Я хочу написать метод для разбора строк, содержащих имена людей и их возраст. Например:
Manuel 8
Mustafa 16
Zhihao 12
Itsuki 12
Louis 11
Farah 11
т.е. спецификация строк: %N %A
, где %N
представляет имя, а %A
представляет возраст.
Однако спецификация строк не является фиксированной (например, это может быть %N age:%A
или %N (%A)
в другом документе), поэтому метод синтаксического анализа должен иметь возможность принять спецификацию в качестве одного из аргументов.
Другими словами, метод синтаксического анализа должен работать так:
Data d1 = Parser.parse("Indira 15", "%N %A");
Data d2 = Parser.parse("12 Shu-chen", "%A %N");
Data d3 = Parser.parse("Hana (12)", "%N (%A)");
Data d4 = Parser.parse("Name: Sophia [12]", "Name: %N [%A]");
, где Data
и Parser
определены следующим образом:
public class Data {
private String name;
private int age;
public Data(String name, int age) {
this.name = name;
this.age = age;
}
// + getter and setter methods.
}
public class Parser {
public static Data parse(String s, String specification) {
// --- What to do here? ---
return (new Data(name, age));
}
}
Как можно написать Parser.parse
? Другими словами, как можно проанализировать строку, используя спецификацию строки?