我有以下字符串:
String x = "020120765";
我希望此字符串采用02 0120765
的形式。一种可能性是:
x = x.substring(0,2) + " " + x.substring(2, x.length());
或:
x = String.format("%s %s", x.substring(0, 2), x.substring(2));
还有其他更好或更优雅的方式吗?我正在思考正则表达式的方向。我尝试过以下方法:
x = String.format("%s %s", x.split("\\d{2}"));
但它不起作用。
答案 0 :(得分:8)
您还可以使用StringBuilder
insert
方法:
x = new StringBuilder(x).insert(2, ' ').toString();
答案 1 :(得分:5)
另一个选择
x = x.replaceAll("(..)(.+)", "$1 $2");
答案 2 :(得分:2)
如果您对正则表达式解决方案感兴趣,那么您可以尝试使用
x = x.replaceAll("^..", "$0 ")
^..
将匹配前两个字符。 $0
是对来自群组0
(包含整个匹配)的匹配的引用,因此$0
会将匹配的部分替换为自身加空格。
答案 3 :(得分:0)
x=String.format("%s %s",x.split("(?<=\\G.{2})", 2))
将无法正常工作,因为您尝试传入数组并且参数太少。但是,您可以这样做:
x=String.format("%s %s",x.split("(?<=\\G.{2})", 2)[0], x.split("(?<=\\G.{2})", 2)[1]);
或者,更整洁,
String[] arr = x.split("(?<=\\G.{2})", 2);
x = String.format("%s %s", arr[0], arr[1]);
编辑:我对正则表达式非常缺乏经验,请原谅以前不正确的正则表达式模式。
答案 4 :(得分:0)
x.replaceAll("(?<=^..)", " ");