假设我有一个输入字符串,我需要像这样格式化它:
### ### ############........etc
所以它必须有前三个字符,然后是一个空格,然后是另外三个字符,空格,然后是其余的。是否有能够做到这一点的第三方库或 JDK 类?
我试图使用正则表达式
System.out.println(inputString.replaceAll(".{3}", "$0 "));
但它不起作用,因为结果是
### ### ### ### ### etc.
假设我有一个输入字符串,我需要像这样格式化它:
### ### ############........etc
所以它必须有前三个字符,然后是一个空格,然后是另外三个字符,空格,然后是其余的。是否有能够做到这一点的第三方库或 JDK 类?
我试图使用正则表达式
System.out.println(inputString.replaceAll(".{3}", "$0 "));
但它不起作用,因为结果是
### ### ### ### ### etc.
你可以这样做:
System.out.println(inputString.replaceFirst("(.{3})(.{0,3})", "$1 $2 "));
解释:
就像$0
整个匹配的字符串一样$1
,$2
括号中的第一个和第二个匹配的东西分别是和。
我将其修改为 6 个字符或更短的{3}
字符串{0,3}
也可以工作(但是,当字符串介于 4 到 6 个字符之间时,它确实会添加一个尾随空格,可以使用.trim()
(这可能会产生不需要的其他效果)或更复杂的东西来删除)。
希望其余部分不需要解释,因为它与您的代码非常相似,但如果您不确定,请随时询问。 Java 正则表达式参考。
例子:
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 "));
印刷:
123 456 78901234567890
12
123 45
您可以使用 :
String formattedStr = "%s %s %s";
inputStr = String.format(formattedStr ,inputStr.substring(0,3),inputStr.substring(3,6),inputStr.substring(6) );