Java String更改单词的顺序

时间:2013-09-17 23:59:43

标签: java

我有一个字符串:

String s = "1 = Nick , 2 = Jack , 3 = Sarah , 4 = Katherina";

我想改变这样的单词顺序:

String s = "Nick = 1 , Jack = 2 , Sarah = 3 , Katherina = 4";

我如何更改地点编号和名称?

2 个答案:

答案 0 :(得分:13)

String s = "1 = Nick , 2 = Jack , 3 = Sarah , 4 = Katherina";
s = s.replaceAll("(\\d+) = (\\w+)", "$2 = $1");
System.out.println(s);

replaceAll有两个参数regexreplacement。在第一个参数中,我们希望传递匹配

的正则表达式
  • 一个或多个数字 - \\d代表一位数字,
    \\d+代表一个或多个数字
    我们也可以通过用括号(\\d+)包围它来将它放在一个组中 - 这将是第一组
  • 接下来应该是空格,方程标记和另一个空格
  • 接下来,一个或多个字符 - \\w表示范围a-z A-Z 0-9_范围内的任何字符。 \\w+代表\\w类的一个或多个字符 我们还会将其放入群组(\\w+) - 这将是第二群组

现在在replacement部分中,我们可以使用$x组,其中x是组号。
因此,如果我们将其写为"$2 = $1",则意味着我们要使用存储在组2(名称)中的匹配部分,然后追加" = ",然后追加存储在组1(ID)中的匹配部分。

答案 1 :(得分:1)

我知道正则表达式有一个很好的答案,我只是提供一个没有(复杂)正则表达式的替代方案来进行比较,以显示为什么正则表达式是这个答案的更好/更简单的解决方案。

String s = "1 = Nick , 2 = Jack , 3 = Sarah , 4 = Katherina";
s = s.replace(" ", "");
StringBuilder out = new StringBuilder();
String[] s2 = s.split(",");
for (int i = 0; i < s2.length; i++) {
    String[] s3 = s2[i].split("=");
    if (i == s2.length - 1) {
        out.append(s3[1]).append(" = ").append(s3[0]);
    } else {
        out.append(s3[1]).append(" = ").append(s3[0]).append(" , ");
    }
}
System.out.print(out);