我有一个字符串:
String s = "1 = Nick , 2 = Jack , 3 = Sarah , 4 = Katherina";
我想改变这样的话的顺序:
String s = "Nick = 1 , Jack = 2 , Sarah = 3 , Katherina = 4";
如何更改地号和名称?
我有一个字符串:
String s = "1 = Nick , 2 = Jack , 3 = Sarah , 4 = Katherina";
我想改变这样的话的顺序:
String s = "Nick = 1 , Jack = 2 , Sarah = 3 , Katherina = 4";
如何更改地号和名称?
String s = "1 = Nick , 2 = Jack , 3 = Sarah , 4 = Katherina";
s = s.replaceAll("(\\d+) = (\\w+)", "$2 = $1");
System.out.println(s);
replaceAll
接受两个参数regex
和replacement
. 在第一个参数中,我们要传递匹配的正则表达式
\\d
代表一个数字,\\d+
代表一个或多个数字(\\d+)
- 这将是第一组\\w
表示范围内的任何字符a-z
A-Z
0-9
或_
\\w+
将表示一个或多个\\w
类字符(\\w+)
- 这将是第二组现在replacement
部分地我们可以使用带有组号$x
的x
组。
因此,如果我们这样写,"$2 = $1"
则意味着我们要使用存储在第 2 组(名称)中的" = "
匹配部分,然后追加然后附加存储在第 1 组(ID)中的匹配部分。
我知道正则表达式有一个很好的答案,我只是提供一个没有(复杂)正则表达式的替代方案来比较,以说明为什么正则表达式是这个答案的更好/更简单的解决方案。
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);