好的,这是我第一次在这里发帖,所以请耐心等待。
我的格式为"Smith, Bob I"
,我需要将此字符串切换为"Bob I. Smith"
。关于如何做到这一点的任何想法?
这是我尝试过的一种方式,虽然它确实完成了工作,但看起来很邋。。
public static void main(String[] args) {
String s = "Smith, Bob I.", r = "";
String[] names;
for(int i =0; i < s.length(); i++){
if(s.indexOf(',') != -1){
if(s.charAt(i) != ',')
r += s.charAt(i);
}
}
names = r.split(" ");
for(int i = 0; i < names.length; i++){
}
System.out.println(names[1] +" " + names[2] + " " + names[0]);
}
答案 0 :(得分:10)
如果名称始终为<last name>, <firstname>
,请尝试以下操作:
String name = "Smith, Bob I.".replaceAll( "(.*),\\s+(.*)", "$2 $1" );
这会将Smith
收集到第1组,将Bob I.
收集到第2组,然后在替换字符串中将其作为$1
和$2
进行访问。由于表达式中的(.*)
组,整个字符串匹配并将被替换完全替换,替换只是由空格字符交换和分隔的2个组。
答案 1 :(得分:5)
String[] names = "Smith, Bob I.".split("[, ]+");
System.out.println(names[1] + " " + names[2] + " " + names[0]);
答案 2 :(得分:4)
final String[] s = "Smith, Bob I.".split(",");
System.out.println(String.format("%s %s", s[1].trim(), s[0]));
答案 3 :(得分:3)
String s = "Smith, Bob I.";
String result = s.substring(s.indexOf(" ")).trim() + " "
+ s.substring(0, s.indexOf(","));