Java:从给定的全名字符串中删除逗号和姓氏

时间:2018-06-21 15:47:32

标签: java

我有一个名字列表,例如: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。

5 个答案:

答案 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());

它将为您带来乔恩结果