java String.format - 如何在两个字符之间放置 space
java String.format - how to put a space between two characters
我正在寻找一种使用格式化程序在两个字符之间放置 space 的方法。我认为使用字符串格式化程序会很容易。
这是我想要完成的:
给定:"AB" 它将产生 "A B"
这是我目前尝试过的方法:
"AB".format("%#s")
但这一直返回 "AB" 我想要 "A B"。我认为数字符号可以用于 space。
我也试过这个:
"26".format("%#d") but its still prints "26"
有没有办法用 string.formatter 做这个。
我找不到使用 String#format
执行此操作的方法。但这里有一种使用正则表达式替换来完成此操作的方法:
String input = "AB";
String output = input.replaceAll("(?<=[A-Z])(?=[A-Z])", " ");
System.out.println(output);
正则表达式模式 (?<=[A-Z])(?=[A-Z])
将匹配两个大写字母之间的每个位置,并在该点插入一个 space。上面的脚本打印:
A B
虽然不能直接使用模式,但使用字符串格式化程序是有可能的。
jshell> String.format("%1$c %2$c", "AB".chars().boxed().toArray())
==> "A B"
我们需要将字符串转换为对象数组,以便它可以作为可变参数传入,格式化程序模式可以根据索引(1$
和 2$
)提取字符并将它们格式化为字符 (c
).
下面是一个更简单的正则表达式解决方案,它可以扩展到任意数量的字符:
jshell> "ABC^&*123".replaceAll(".", "[=11=] ").trim()
==> "A B C ^ & * 1 2 3"
所有单个字符都替换为 them-self ([=15=]
),后跟 space。然后用 trim()
调用删除最后一个额外的 space。
我正在寻找一种使用格式化程序在两个字符之间放置 space 的方法。我认为使用字符串格式化程序会很容易。
这是我想要完成的:
给定:"AB" 它将产生 "A B"
这是我目前尝试过的方法:
"AB".format("%#s")
但这一直返回 "AB" 我想要 "A B"。我认为数字符号可以用于 space。
我也试过这个:
"26".format("%#d") but its still prints "26"
有没有办法用 string.formatter 做这个。
我找不到使用 String#format
执行此操作的方法。但这里有一种使用正则表达式替换来完成此操作的方法:
String input = "AB";
String output = input.replaceAll("(?<=[A-Z])(?=[A-Z])", " ");
System.out.println(output);
正则表达式模式 (?<=[A-Z])(?=[A-Z])
将匹配两个大写字母之间的每个位置,并在该点插入一个 space。上面的脚本打印:
A B
虽然不能直接使用模式,但使用字符串格式化程序是有可能的。
jshell> String.format("%1$c %2$c", "AB".chars().boxed().toArray())
==> "A B"
我们需要将字符串转换为对象数组,以便它可以作为可变参数传入,格式化程序模式可以根据索引(1$
和 2$
)提取字符并将它们格式化为字符 (c
).
下面是一个更简单的正则表达式解决方案,它可以扩展到任意数量的字符:
jshell> "ABC^&*123".replaceAll(".", "[=11=] ").trim()
==> "A B C ^ & * 1 2 3"
所有单个字符都替换为 them-self ([=15=]
),后跟 space。然后用 trim()
调用删除最后一个额外的 space。