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



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

这是我想要完成的:

给定:"AB"它将产生"A B">

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

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

但这不断返回"AB"我想要"A B"。 我认为数字符号可以用于空格。

我也试过这个:

"26".format("%#d") but its still prints "26"

无论如何都可以用string.formatter来做到这一点。

字符串格式化程序是可能的,尽管不是直接使用模式。

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"

所有单个字符都替换为 self ($0(,后跟一个空格。然后,最后一个额外的空格将通过trim()调用删除。

我找不到使用 String#format 执行此操作的方法。 但这里有一种使用正则表达式替换来实现此目的的方法:

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

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

A B

相关内容

  • 没有找到相关文章

最新更新