6

わかりました、ここに投稿するのは初めてですので、ご容赦ください。

の形式の名前があり、"Smith, Bob I"この文字列を read に切り替える必要があります"Bob I. Smith"。これを行う方法についてのアイデアはありますか?

これは私が試した 1 つの方法であり、仕事は完了しますが、かなりずさんに見えます。

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

名前が常に の場合は<last name>, <firstname>、これを試してください。

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

Smithこれはグループ 1 とグループ 2 に集められ、置換文字列Bob I.としてアクセスされ$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 に答える