假设我有一个输入字符串,我需要像这样格式化它:
### ### ############........etc
所以它必须有前三个字符,然后是一个空格,然后是另外三个字符,空格,然后是其余字符。是否有第三方库或JDK类能够做到这一点?
我试图使用正则表达式
System.out.println(inputString.replaceAll(".{3}", "$0 "));
但它不起作用,因为结果是
### ### ### ### ### etc.
答案 0 :(得分:2)
你可以这样做:
System.out.println(inputString.replaceFirst("(.{3})(.{0,3})", "$1 $2 "));
<强>解释强>
正如$0
是完整匹配的字符串一样,$1
和$2
分别是括号中第一个和第二个匹配的内容。
我将{3}
修改为{0,3}
,因此6个字符或更短的字符串也可以工作(但是当字符串介于4到6个字符之间时,它会添加一个尾随空格,可以使用{{ 1}}(可能有不必要的其他影响)或更复杂的东西)。
希望其余部分无需解释,因为它与您的代码非常相似,但您可以随意询问您是否不确定。 Java regex reference
示例:强>
.trim()
打印:
System.out.println("12345678901234567890".replaceFirst("(.{3})(.{0,3})", "$1 $2 "));
System.out.println("12".replaceFirst("(.{3})(.{0,3})", "$1 $2 "));
System.out.println("12345".replaceFirst("(.{3})(.{0,3})", "$1 $2 "));
答案 1 :(得分:0)
您可以使用:
String formattedStr = "%s %s %s";
inputStr = String.format(formattedStr ,inputStr.substring(0,3),inputStr.substring(3,6),inputStr.substring(6) );