如何使用正则表达式获取java中姓氏的首字母
输入:克里斯·盖尔 所需输出:Chris G 我目前正在使用:如何使用正则表达式获取java中姓氏的首字母,java,regex,Java,Regex,输入:克里斯·盖尔 所需输出:Chris G 我目前正在使用: String inputStr = "Chris Gayle"; String[] strArr = inputStr.split(" "); String output =strArr[0] + " " + strArr[1].charAt(0); 但是,我希望通过使用模式匹配技术在String类中使用“replaceAll”函数,找到一个占用更少代码行的实现。通过replaceAll函数 string.replaceAll("
String inputStr = "Chris Gayle";
String[] strArr = inputStr.split(" ");
String output =strArr[0] + " " + strArr[1].charAt(0);
但是,我希望通过使用模式匹配技术在String类中使用“replaceAll”函数,找到一个占用更少代码行的实现。通过replaceAll函数
string.replaceAll("(?<=\\s.).*", "");
上面的正则表达式将匹配前面有空格和单个字符的所有字符。我实际上不会为此使用正则表达式 范例 输出 这里的优点是,您可以有多个项目的名称,即…Chris Foo Gayle->Chris Foo G 注 这意味着每个项目都用空格分隔,或者至少姓氏是。它将以克里斯·J·盖尔(Chris J.Gayle)这样的人物返回意想不到的结果 更糟糕的是,如果您的输入不包含任何空格,即单个名称。 如果这是一种可能的情况,您应该检查input.lastIndexOf!=-1在调用子字符串之前。一行回答:
System.out.println("Chris Gayle".replaceAll("([a-z]*)$", ""));
注意:姓氏必须以大写字母开头。不要根据代码行来衡量代码质量。您的代码运行良好,易于理解-这可能比超级复杂的正则表达式更值钱一些其他开发人员需要调试20分钟才能理解它。您尝试过吗?无论您选择哪种解决方案,
Chris G
System.out.println("Chris Gayle".replaceAll("([a-z]*)$", ""));