这些符号字符串是什么意思: %02d %01d?
我正在查看类似于以下内容的代码行:
sprintf(buffer,"%02d:%02d:%02d",hour,minute,second);
我认为符号字符串是指每小时,每分钟等显示的数字字符数 - 或类似的东西,我不完全确定。
通常我可以弄清楚这种事情,但我无法在谷歌上找到任何有用的参考搜索“%02d %01d”。有人能为我阐明这一点吗?
我正在查看类似于以下内容的代码行:
sprintf(buffer,"%02d:%02d:%02d",hour,minute,second);
我认为符号字符串是指每小时,每分钟等显示的数字字符数 - 或类似的东西,我不完全确定。
通常我可以弄清楚这种事情,但我无法在谷歌上找到任何有用的参考搜索“%02d %01d”。有人能为我阐明这一点吗?
而不是谷歌搜索,你应该一直在搜索功能。%02d
sprintf()
%02d
表示“用 2 位数字格式化整数,用零填充它”,所以:
Format Data Result %02d 1 01 %02d 11 11
他们正在格式化 。Java特定的语法在java.util.Formatter
中给出。String
一般语法如下:
%[argument_index$][flags][width][.precision]conversion
%02d
执行十进制整数转换,格式为零填充(标志),带宽度。因此,值为 的参数将设置为 。d
0
2
int
7
"07"
String
您可能还会看到此格式字符串,例如 String.format
。
这些只是一些常用的格式,并没有详尽地涵盖语法。
System.out.printf("Agent %03d to the rescue!", 7);
// Agent 007 to the rescue!
您可以使用该标志进行左对齐;否则,这将是正确的理由。-
for (Map.Entry<Object,Object> prop : System.getProperties().entrySet()) {
System.out.printf("%-30s : %50s%n", prop.getKey(), prop.getValue());
}
这将打印如下内容:
java.version : 1.6.0_07
java.vm.name : Java HotSpot(TM) Client VM
java.vm.vendor : Sun Microsystems Inc.
java.vm.specification.name : Java Virtual Machine Specification
java.runtime.name : Java(TM) SE Runtime Environment
java.vendor.url : http://java.sun.com/
要获得更强大的消息格式,可以使用 java.text.MessageFormat
。 是换行符转换(见下文)。%n
System.out.println(Integer.toHexString(255));
// ff
System.out.printf("%d is %<08X", 255);
// 255 is 000000FF
请注意,这也使用相对索引(见下文)。<
System.out.printf("%+,010.2f%n", 1234.567);
System.out.printf("%+,010.2f%n", -66.6666);
// +01,234.57
// -000066.67
要获得更强大的浮点格式,请改用 DecimalFormat
。
%n
用于特定于平台的线分隔符System.out.printf("%s,%n%s%n", "Hello", "World");
// Hello,
// World
%%
对于实际的 -符号%
System.out.printf("It's %s%% guaranteed!", 99.99);
// It's 99.99% guaranteed!
请注意,文本自动装箱到 ,在其上定义了字符串转换使用。double
99.99
Double
toString()
n$
用于显式参数索引System.out.printf("%1$s! %1$s %2$s! %1$s %2$s %3$s!",
"Du", "hast", "mich"
);
// Du! Du hast! Du hast mich!
<
用于相对索引System.out.format("%s?! %<S?!?!?", "Who's your daddy");
// Who's your daddy?! WHO'S YOUR DADDY?!?!?