gpt4 book ai didi

java - 如何在 Java 中使用 String Formatter 设置宽度和填充整数

转载 作者:行者123 更新时间:2023-11-29 07:29:32 24 4
gpt4 key购买 nike

鉴于我有以下整数:

1, 10, 100

我想用零填充它们以正好有 3 个数字:

001
010
100

我想打印它们并以 10 个空格为前缀:

      001 //assume 10 spaces from the beginning of the line 
010
100

我想使用 Java formatter string实现这一点,但我只成功地完成了上述条件之一,但不是同时完成这两个条件

下面是我创建的 2 个表达式,它们满足每个条件:

    @Test
public void test1() {

String[] langs = { "TEXTX", "TEXTXXX", "TEXTXX" };
int[] nums = {1, 10, 100};

for (int i = 0; i < 3; i++) {

String s = langs[i];
int n = nums[i];

System.out.printf("%1$s%2$14s%3$03d\n", s, " ", n);
}

}

根据文档,格式化程序字符串具有以下形式:

%[argument_index$][flags][width][.precision]conversion

但显然零填充标志参数后面不能跟宽度参数,因为它被解析为一个数字,导致“长宽度”。

如何重写以实现上述条件?

注意:

我唯一的想法是明确地向参数添加一个空格并尝试将其作为参数进行操作。像这样:

System.out.printf("%1$s%2$10s%3$03d\n", s, " ", n);

编辑:

抱歉,我刚刚意识到我没有完整描述我的问题。这些数字需要跟在某些其他不同长度的字符串之后,如下所示:

textX       001
textXXX 010
textXX 100

这样间距是可变的

最佳答案

如果唯一的两个标准是 10 个空格的填充和数字的零填充:

final String str = String.format("%10s%03d", " ", 2);

从 OP 更新后编辑:

 System.out.printf("%-10s%03d", "abc", 2);

工作原理:

我们的模式需要两个参数,一个用于长度为 10 的字符串,一个用于整数。

%10s 是长度为 10 的字符串的模式。为了左对齐,我们添加 -: %-10s。第二个参数是长度为 3 的整数,我们要用零填充:%03d

如果我们不想为多个格式说明符重新排列或重用一个参数,只需按照模式中指定的顺序传递参数即可。

关于java - 如何在 Java 中使用 String Formatter 设置宽度和填充整数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44964878/

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