java String.format-如何在两个字符之间放置空格

时间:2019-06-15 15:09:40

标签: string.format

我正在寻找一种使用格式化程序在两个字符之间放置空格的方法。我认为使用字符串格式化程序会很容易。

这是我要完成的工作:

鉴于:“ AB”将产生“ A B”

这是我到目前为止所尝试的:

"AB".format("%#s")

但是这一直返回“ AB”,我想要“ A B”。我以为数字符号可以用于空间。

我也尝试过:

"26".format("%#d") but its still prints "26"
无论如何,

都可以使用string.formatter来做到这一点。

2 个答案:

答案 0 :(得分:1)

我找不到使用String#format来做到这一点的方法。但这是使用正则表达式替换来完成此操作的一种方法:

String input = "AB";
String output = input.replaceAll("(?<=[A-Z])(?=[A-Z])", " ");
System.out.println(output);

正则表达式模式(?<=[A-Z])(?=[A-Z])将匹配两个大写字母之间的每个位置,并在该位置插入一个空格。上面的脚本打印:

A B

答案 1 :(得分:1)

尽管不是直接与模式一起使用,但字符串格式化程序还是有可能的。

jshell> String.format("%1$c %2$c", "AB".chars().boxed().toArray())
$10 ==> "A B"

我们需要将字符串转换为对象数组,以便可以将其作为varargs传递,并且格式化程序模式可以根据索引(1$2$)提取字符并将其格式化为字符( c

以下更简单的正则表达式解决方案可以缩放到任意数量的字符:

jshell> "ABC^&*123".replaceAll(".", "$0 ").trim()
$3 ==> "A B C ^ & * 1 2 3"

所有单个字符均由它们自己($0)替换,后跟空格。然后,通过trim()调用删除最后一个多余的空间。