在 Java 中拆分一个复杂的字符串。
Split a complex String in Java.
我使用了用户引入的复杂字符串,格式如下:
Name: John
Surname: Doe Patrick
Age: Thirty-one
`
我想拆分并解析为具有这 3 个属性的对象 Person,但我不想在这个 class 的属性中包含字段(姓名:,姓氏:,年龄:)。
你能帮我找到一个正则表达式或其他方法吗?
非常感谢!
试试这个正则表达式,它会在每一行中包含“:”(两个点)之后的内容。
(?<=:\s)([^\n]+)
你应该清楚字符串格式是什么。例如,如果唯一可以出现 :
的地方是字段名称及其值之间,那么您就有了一个可以遵循的良好模式。按新行拆分,然后按 :
将生成类似键值对的结果,因此您可以将每对的 [0]
元素映射为字段名称,这样您就会知道将值放在哪里(姓名、年龄等...)。
下面的算法不是很高效,你可以用正则表达式来简化它,例如一般拆分,但它显示了任务的简单性
String s = "Name: John\n" +
"\n" +
"Surname: Doe Patrick\n" +
"\n" +
"Age: Thirty-one";
String[] lines = s.split("\n");
for (String line : lines) {
if (line.trim().equals("")) {
continue;
}
String[] pair = line.split(":");
if (pair[0].trim().equals("Name")) {
System.out.println("Name is " + pair[1].trim()); // assign to the corresponding property
} else if (pair[0].trim().equals("Surname")) {
System.out.println("Surname is " + pair[1].trim());
} else if (pair[0].trim().equals("Age")) {
System.out.println("Age is " + pair[1].trim());
}
}
输出为:
Name is John
Surname is Doe Patrick
Age is Thirty-one
我使用了用户引入的复杂字符串,格式如下:
Name: John
Surname: Doe Patrick
Age: Thirty-one `
我想拆分并解析为具有这 3 个属性的对象 Person,但我不想在这个 class 的属性中包含字段(姓名:,姓氏:,年龄:)。
你能帮我找到一个正则表达式或其他方法吗? 非常感谢!
试试这个正则表达式,它会在每一行中包含“:”(两个点)之后的内容。
(?<=:\s)([^\n]+)
你应该清楚字符串格式是什么。例如,如果唯一可以出现 :
的地方是字段名称及其值之间,那么您就有了一个可以遵循的良好模式。按新行拆分,然后按 :
将生成类似键值对的结果,因此您可以将每对的 [0]
元素映射为字段名称,这样您就会知道将值放在哪里(姓名、年龄等...)。
下面的算法不是很高效,你可以用正则表达式来简化它,例如一般拆分,但它显示了任务的简单性
String s = "Name: John\n" +
"\n" +
"Surname: Doe Patrick\n" +
"\n" +
"Age: Thirty-one";
String[] lines = s.split("\n");
for (String line : lines) {
if (line.trim().equals("")) {
continue;
}
String[] pair = line.split(":");
if (pair[0].trim().equals("Name")) {
System.out.println("Name is " + pair[1].trim()); // assign to the corresponding property
} else if (pair[0].trim().equals("Surname")) {
System.out.println("Surname is " + pair[1].trim());
} else if (pair[0].trim().equals("Age")) {
System.out.println("Age is " + pair[1].trim());
}
}
输出为:
Name is John
Surname is Doe Patrick
Age is Thirty-one