6

好的,这是我第一次在这里发帖,所以请多多包涵。

我有一个格式为的名称,"Smith, Bob I"我需要将此字符串切换为 read "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]);


    }
4

4 回答 4

10

如果名称 always <last name>, <firstname>,请尝试以下操作:

String name = "Smith, Bob I.".replaceAll( "(.*),\\s+(.*)", "$2 $1" );

这将收集Smith到第 1 组和Bob I.第 2 组,然后在替换字符串中访问$1它们$2。由于(.*)表达式中的组,整个字符串匹配并将被替换完全替换,替换只是交换并由空格字符分隔的 2 个组。

于 2012-05-10T20:28:20.327 回答
5
    String[] names = "Smith, Bob I.".split("[, ]+");
    System.out.println(names[1] + " " + names[2] + " " + names[0]);
于 2012-05-10T20:22:15.527 回答
4
final String[] s = "Smith, Bob I.".split(",");
System.out.println(String.format("%s %s", s[1].trim(), s[0]));
于 2012-05-10T20:25:05.140 回答
3
String s = "Smith, Bob I.";
String result = s.substring(s.indexOf(" ")).trim() + " "
            + s.substring(0, s.indexOf(","));
于 2012-05-10T20:31:46.973 回答