在java中交换数组中元素的位置?

时间:2012-05-10 20:18:22

标签: java arrays string position switching

好的,这是我第一次在这里发帖,所以请耐心等待。

我的格式为"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]);


    }

4 个答案:

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