"999000-6ren">
gpt4 book ai didi

java - 如何使用多个填充段格式化 Java 字符串

转载 作者:行者123 更新时间:2023-12-04 15:08:11 30 4
gpt4 key购买 nike

我有一些代码假定输入不会超过 6 位数字。它采用该值,用前导 0 填充它,然后用“999”作为前缀,如下所示:

String.format("999%06d", 123); // => "999000123"

预期的输入现在超出了 6 位最大值,变成了 7 位数字。这会产生 10 个字符的格式化输出(例如 String.format("999%06d", 1000000);//=> "9991000000"),这对我们来说是个问题。

问题:是否可以指定此字符串格式,以便它保持与上述相同的逻辑,但不是始终以前导“999”为前缀,如果输入为 7,它只会以两个前导“9”为前缀数字长(如果输入的长度 <= 6 位,则仍以三个前导“9”作为前缀)?

为了帮助说明,这些是当值从 6 位增加到 7 位时我们希望的输入/输出:

(Input) => (Formatted Output)
1 => "999000001"
999999 => "999999999"
1000000 => "991000000"

(我知道还有其他方法可以完成此操作,这些方法很有用,但我们的情况并不典型,所以我想问一下是否可以在单个 String.format 调用中完成此操作)

最佳答案

解决方法:

static String prefix999(int number) {
String s = String.format("999%06d", number);
return s.substring(Math.min(3, s.length() - 9));
}

测试

System.out.println(prefix999(123));
System.out.println(prefix999(1));
System.out.println(prefix999(999999));
System.out.println(prefix999(1000000));
System.out.println(prefix999(1234567));
System.out.println(prefix999(12345678));
System.out.println(prefix999(123456789));
System.out.println(prefix999(1234567890));

输出

999000123
999000001
999999999
991000000
991234567
912345678
123456789
1234567890

关于java - 如何使用多个填充段格式化 Java 字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65690725/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com