在String.format(Java)中使用“%1$#”时是什么意思?

vltsax25  于 2023-04-04  发布在  Java
关注(0)|答案(2)|浏览(269)

语言是Java。%1$#在...

static String padright (String str, int num) {
   return String.format("%1$#" + num + "str", str);
}

在Java API中,String.format()是这样使用的:

public static String format(String format, Object... args)

所以我认为%1$#是一个格式说明符。
%[flags][width][.precision][argsize]typechar是模板。

  • 1是国旗吗?
  • $是宽度?
  • #是精度吗?
  • num是argsize吗?
  • “str”是typechar吗?

是这样吗?

g52tjvyc

g52tjvyc1#

模板:

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

可选的argument_index是一个十进制整数,表示参数在参数列表中的位置。第一个参数由“1$”引用,第二个由“2$”引用,依此类推。
可选标志是修改输出格式的一组字符。有效标志的设置取决于转换。
可选的宽度是一个十进制整数,指示要写入输出的最小字符数。
可选精度是一个非负的十进制整数,通常用于限制字符数。具体行为取决于转换。
所需的转换是一个字符,指示参数应如何格式化。给定参数的有效转换集取决于参数的数据类型。
%1$指的是第一个替换。在本例中,字符串str.#是flag,表示结果应该使用依赖于转换的替换形式。
http://download.oracle.com/javase/1.5.0/docs/api/java/util/Formatter.html

hzbexzde

hzbexzde2#

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

%1$s

%对于格式是强制性的1$是传递的第一个参数2$是第二个... etc s这里是字符串类型转换(结果通过调用arg.toString()获得)
具有多个字符串参数的示例:

String firstName = "John";
String lastName = "Doe";
String formattedString = String.format("My name is %1$s %2$s.", firstName, lastName);
System.out.println(formattedString);

输出:

My name is John Doe.

在此示例中,%1$s用于引用第一个字符串参数(firstName),%2$s用于引用第二个字符串参数(lastName)。
具有多个数值参数的示例:

int num1 = 10;
double num2 = 3.14159;
String formattedString = String.format("The value of num1 is %1$d and the value of num2 is %2$.2f.", num1, num2);
System.out.println(formattedString);

输出:

The value of num1 is 10 and the value of num2 is 3.14.

在此示例中,%1$d用于引用第一个数字参数(num 1),%2$.2f用于引用第二个数字参数(num 2),并将其格式设置为具有两个小数位的浮点值。
混合参数示例:

String name = "John";
int age = 30;
double height = 1.80;
String formattedString = String.format("%1$s is %2$d years old and is %3$.2f meters tall.", name, age, height);
System.out.println(formattedString);

输出:

John is 30 years old and is 1.80 meters tall.

在此示例中,%1$s用于引用第一个字符串参数(name),%2$d用于引用第二个数字参数(age),%3$.2f用于引用第三个数字参数(height),并将其格式设置为具有两位小数位的浮点值。

相关问题