包含$的格式字符串之间是否有区别?
%1d
与%1$d
我注意到,在应用程序代码中,我们两者兼有,而且似乎都可以正常工作。
或使用%1d to %2d
与%1$d to %2$d
答案 0 :(得分:1)
请参见java.util.Formatter ...它被称为“显式参数索引”。
在引用1个单个索引时,这没有什么区别,因为不能更改顺序。最常见的用法是在传递一个参数的同时在同一字符串中替换两次。
完整模式如下所示:
%[argument_index$][flags][width][.precision]conversion
答案 1 :(得分:1)
对于有相同问题的任何人:他们不是同一个人
对于发布的示例:
<div style={{ position: 'absolute', zIndex: 1, pointerEvents: 'none', //<---- remove this line right: 10, top: 10, backgroundColor: 'white', }}>
与%1d to %2d
正如Martin所分享的,格式模式为:
%1$d to %2$d
正则表达式通过不放置%[argument_index$][flags][width][.precision]conversion
,将$
,%1
等用于以下正则表达式参数。
%2
需要一些特定值,因此flags
和1
被用作2
参数,它指定了最小宽度 。如果继续使用相同的模式,最终将得到以下结果:
width
当然,当使用String.format("Hello: '%1d' '%2d' '%3d' '%4d'", 1, 2, 3, 4);
==> Hello: '1' ' 2' ' 3' ' 4'
参数时,%number不会代表所需的参数顺序:
width
答案 2 :(得分:1)
%d
-仅显示数字
int first = 10;
System.out.printf("%d", first);
// output:
// 10
%1d
-显示编号,其中包含应“保留”多少空间(至少一个)的信息
int first = 10;
System.out.printf("->%1d<-", first);
// output:
// ->10<-
%9d
-保留“ 9”个字符(如果数字会更短-在此放置空格)并向右对齐
int first = 10;
System.out.printf("->%9d<-", first);
// output:
// -> 10<-
// 123456789
%-9d
-与上面相同,但与LEFT对齐(此minus
很重要)
int first = 10;
System.out.printf("->%-9d<-", first);
// output:
// ->10 <-
// 123456789
%1$d
-使用varargs中元素的位置(以格式表示)(因此您可以重新使用元素,而不必两次传递它们)
int first = 10;
int second = 20;
System.out.printf("%1$d %2$d %1$d", first, second);
// output:
// 10 20 10
%1$9d
-混合两个。获取第一个参数(1$
)并保留9个字符(%9d
)
int first = 10;
System.out.printf("->%1$9d<-", first);
// output:
// -> 10<-
// 123456789