【问题标题】:java String.format - how to put a space between two charactersjava String.format - 如何在两个字符之间放置一个空格
【发布时间】:2019-06-16 00:12:15
【问题描述】:

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

这是我想要完成的:

给定:“AB”它将产生“AB”

这是我迄今为止尝试过的:

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

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

我也试过这个:

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

无论如何都可以使用 string.formatter 来执行此操作。

【问题讨论】:

    标签: string.format


    【解决方案1】:

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

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

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

    一个更简单的正则表达式解决方案如下,它可以扩展到任意数量的字符:

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

    所有单个字符都替换为他们自己 ($0),后跟一个空格。然后使用trim() 调用删除最后一个额外的空间。

    【讨论】:

      【解决方案2】:

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

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

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

      A B
      

      【讨论】:

      • 我如何包含数字。它应该是任何类型的字符。
      • 使用正则表达式模式(?&lt;=.)(?=.) 在任意两个字符之间添加一个空格。
      猜你喜欢
      • 1970-01-01
      • 2016-06-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-04-25
      • 2017-10-14
      相关资源
      最近更新 更多