Java如何格式化字符串?
我有以下字符串:Java如何格式化字符串?,java,string-formatting,Java,String Formatting,我有以下字符串: String x = "020120765"; 我希望此字符串的格式为02 0120765。一种可能性是: x = x.substring(0,2) + " " + x.substring(2, x.length()); 或: 还有其他更好或优雅的方式吗?我正朝着正则表达式的方向思考。我尝试了以下方法: x = String.format("%s %s", x.split("\\d{2}")); 但它不起作用 另一种选择 x = x.replaceAll("(..)(.+
String x = "020120765";
我希望此字符串的格式为02 0120765
。一种可能性是:
x = x.substring(0,2) + " " + x.substring(2, x.length());
或:
还有其他更好或优雅的方式吗?我正朝着正则表达式的方向思考。我尝试了以下方法:
x = String.format("%s %s", x.split("\\d{2}"));
但它不起作用 另一种选择
x = x.replaceAll("(..)(.+)", "$1 $2");
如果您对正则表达式解决方案感兴趣,那么可以尝试使用
x = x.replaceAll("^..", "$0 ")
^..
将匹配前两个字符$0
是组0
中匹配的引用(包含整个匹配项),因此$0
将用自身加空格替换匹配的部分 您还可以使用StringBuilder
及其方法:
x=String.format(“%s%s”,x.split((?x.replaceAll)()您可以省略x.length()
作为substring
的第二个参数,只需写入x.substring(2)
+1这似乎是最简单、最直接的解决方案。+1.位置会发生变化,因此我只需要在与正则表达式匹配时插入空格。否则,默认字符串应该是值。我不是向下投票人,但拆分(\\d{2}”)
将删除与\\d{2}匹配的部分
这似乎不是OP想要的。我复制OP的正则表达式时出错了。给我几分钟时间,我会修复它。请查看编辑。正则表达式模式现在是正确的,并且已经过测试=)很好。我改为:x.replaceFirst(\\d{2})(\\d+),“$1$2”)
。我怎么会看不到呢。谢谢。在我看来,这是解决这个问题最直接的方法。
x = x.replaceAll("^..", "$0 ")
x = new StringBuilder(x).insert(2, ' ').toString();
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]);
x.replaceAll("(?<=^..)", " ");