Java 将数字格式化为模式,例如1234567890 -> 1234 - 56 78 90

Java format a number into a pattern, e.g. 1234567890 -> 1234 - 56 78 90

我只是想知道是否有可能(以及是否有简单的方法)为特定表达式设置双精度值的格式。例如:

我需要这个值 -> 1111111111

格式化为此 -> 1111 - 11 11 11

有人有想法吗?

谢谢

这取决于确切的输入格式,但这里有一些策略

使用 .substring(beginIndex, endIndex) 分割子串

System.out.println(input.substring(0, 4) + " - " + input.substring(4, 6)
        + " " + input.substring(6, 8) + " " + input.substring(8, 10));

正则表达式使用组来捕获给定的部分,然后用替换重新组装。

System.out.println(input.replaceAll("(....)(..)(..)(..)", " -   "));

正则表达式学究会说这可以用这样的量词来写

(.{4})(.{2})(.{2})(.{2})

甚至用数字

(\d{4})(\d{2})(\d{2})(\d{2})

这取决于格式化输入数据的标准。您可以从检查 Splitter class from Guava. Take a closer look at Splitter.fixedLength(int) 方法开始。也许,它将能够以优雅的方式完成所需的工作。