我有一个名字列表,例如:Doe,Jon 我想删除逗号和姓氏以获得最终结果:Jon
这是我到目前为止所拥有的:
1。
String result = info.substring(info.indexOf(": "), info.indexOf("CareWay"));
//prints: :Doe, Jon
2。
String newstr = result.replaceAll("[^A-Za-z]+", "");
//prints: DoeJon
我不确定如何从步骤1的可变结果中提取Jon。
答案 0 :(得分:1)
如何?
String result = info.split(", ")[1];
如果您有字符串列表:
List<String> names = new ArrayList<>();
names.add("Doe, Jon");
names.add("Jon, Doe");
List<String> result = names.stream().map(name -> name.split(", ")[1]).collect(Collectors.toList());
System.out.print(result);
输出:
[Jon, Doe]
答案 1 :(得分:0)
如果始终采用以下格式:<Last Name>, <First Name>
,则
info.split(", ")[1];
如果可以有任意数量的“,”,那么这是一种更通用的方式,
String[] splitArr = str.split(", ");
System.out.println(splitArr[splitArr.length-1]);
答案 2 :(得分:0)
public class Test {
public static void main(String[] args){
String info=": Doe, JonCareWay";
String result = info.substring(info.indexOf(": "),
info.indexOf("CareWay")).split(",")[1];
System.out.println(result);
String[] splitArr = result.split(", ");
System.out.println(splitArr[splitArr.length-1]);
}
}
答案 3 :(得分:0)
如果您对第2步的格式有保证,则您的正则表达式接近您想要的格式。
要替换为""
,您的正则表达式应为:
" :\w+, "
或者更动态地输入姓氏前的字符:
"\W*\w+, "
如果您想超级简单:
".*, "
(在所有情况下,请注意您可以用\s
替换的空格)
(如果您不想要数字或下划线,请使用\w
代替[a-zA-Z]
)
(与\W
类似)
位置:
\w
是任何单词字符[a-zA-Z0-9_]
\W
是任何非单词字符[^\w]
我建议使用regex101.com测试正则表达式。
答案 4 :(得分:0)
String result = info.substring(info.indexOf(" "),info.length());
它将为您带来乔恩结果