暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

Java 字符串格式化实例讲解

前端新世界 2022-02-16
730

你是否也曾苦恼于不知道怎么理解Java的字符串格式文档?这是一个难点,而本指南简化了Java中字符串格式化的使用,并加深大家的理解。

字符串格式化

在Java中格式化字符串的最常见方法是使用String.format()
方法。如果有“java sprintf”,那就是它了。

String output = String.format("%s = %d""joe"35);

对于格式化的控制台输出,可以使用printf()
System.out
System.err PrintStreams
中的format()
方法。

System.out.printf("My name is: %s%n""joe");

创建Formatter
并将其链接到StringBuilder
。使用format()
方法格式化的输出将附加到StringBuilder
中。

StringBuilder sbuf = new StringBuilder();
Formatter fmt = new Formatter(sbuf);
fmt.format("PI = %f%n", Math.PI);
System.out.print(sbuf.toString());
// 你可以在此处继续将数据附加到sbuf.

格式化转换符

下面是一份关于所有支持字符串格式化转换符的参考说明:

转换符适用于输出
%a浮点数(BigDecimal除外)浮点数的十六进制输出
%b任意类型非null为“true”,null为“false”
%c字符Unicode字符
%d整型 (incl. byte, short, int, long, bigint)十进制整型
%e浮点科学计数法中十进制数
%f浮点十进制数
%g浮点十进制数,可能以科学计数法表示,具体取决于精度和值
%h任意类型来自hashCode()方法的十六进制值字符串。
%nnone平台特定的行分隔符。
%o整型 (incl. byte, short, int, long, bigint)八进制数
%s任意类型字符串值
%tDate/Time (incl. long, Calendar, Date and TemporalAccessor)%t是Date/Time转换的前缀。此后需要更多的格式化标志。参见下面的 Date/Time转换。
%x整型 (incl. byte, short, int, long, bigint)十六进制字符串。

日期和时间格式

注意:用%T
替换下表中的格式字符%t
会使输出大写。

标记说明
%tA星期几的全拼,e.g. “Sunday“, “Monday“
%ta星期几的缩写,e.g. “Sun“, “Mon“, etc.
%tB月份的全拼,e.g. “January“, “February“, etc.
%tb月份的缩写,e.g. “Jan“, “Feb“, etc.
%tC年份的世纪部分,以两位数字格式表示,e.g. “00” through “99”.
%tc用“%ta %tb %td %tT %tZ %tY”格式表示日期和时间,e.g. “Fri Feb 17 07:45:42 PST 2017“
%tD日期格式为“%tm/%td/%ty“
%td用两位数字表示每月的日期。e.g. “01” to “31“.
%te月份中的日期,不带前导0。e.g. “1” to “31”.
%tFISO 8601 格式化日期 “%tY-%tm-%td“.
%tH24小时制的小时,e.g. “00” to “23“.
%th与%tb相同.
%tI12小时制的小时 e.g. “01” – “12“.
%tj一年中的日期,带前导0,e.g. “001” to “366“.
%tk24小时制的小时,不带前导0,e.g. “0” to “23“.
%tl12小时制的小时,不带前导0,e.g. “1” to “12“.
%tM分钟格式,带前导0,e.g. “00” to “59“.
%tm月份格式,带前导0,e.g. “01” to “12“.
%tN9位数格式的纳秒,前导 0,e.g. “000000000” to “999999999”.
%tp特定于地区的 “am”或“pm” 标记.
%tQ自Jan 1 , 1970 00:00:00 UTC以来的毫秒.
%tR24小时时间格式,e.g. “%tH:%tM“.
%tr12小时时间格式,e.g. “%tI:%tM:%tS %Tp“.
%tS分钟内两位数格式的秒,e.g. “00” to “60”. “60”用于闰秒.
%ts自Jan 1, 1970 00:00:00 UTC以来的秒.
%tT24小时时间格式,e.g. “%tH:%tM:%tS“.
%tY4位数的年份格式,e.g. “0000” to “9999“.
%ty2位数的年份格式,e.g. “00” to “99“.
%tZ时区缩写. e.g. “UTC“, “PST“, etc.
%tz与GMT的时差,e.g. “-0800“.

参数索引

参数索引被指定为在%
之后以$
结尾的数字,并在参数列表中选择指定的参数。

String.format("%2$s"32"Hello"); // prints: "Hello"

格式化整数

通过%d
转换说明符,你可以使用所有整数类型的参数,包括byte
short
int
long
BigInteger

默认格式:

String.format("%d"93); // prints 93

指定宽度:

String.format("|%20d|"93); // prints: |                  93| 

在指定宽度内左对齐:

String.format("|%-20d|"93); // prints: |93                  |

用零填充:

String.format("|%020d|"93); // prints: |00000000000000000093|

输出带有“+
”的正数(负数始终有“-
”):

String.format("|%+20d|', 93); // prints: |                 +93|

正数前的空格。

正常情况下,负数包含“-”。

String.format("|% d|"93); // prints: | 93| String.format("|% d|", -36); // prints: |-36|

使用特定于语言环境的千位分隔符。在美国的语言环境中,是“,
”:

String.format("|%,d|"10000000); // prints: |10,000,000|

将负数括在括号(“()
”)内,然后跳过“-
”:

String.format("|%(d|", -36); // prints: |(36)|

八进制输出:

String.format("|%o|"), 93); // prints: 135

十六进制输出:

String.format("|%x|"93); // prints: 5d

八进制和十六进制输出的其他表示形式。输出“0”开头的八进制数和“0x”开头的十六进制数。

String.format("|%#o|"93);
// prints: 0135

String.format("|%#x|"93);
// prints: 0x5d

String.format("|%#X|"93);
// prints: 0X5D

字符串和字符转换

默认格式

打印整个字符串:

String.format("|%s|""Hello World"); // prints: "Hello World"

指定字段长度:

String.format("|%30s|""Hello World"); // prints: | Hello World|

左对齐文本:

String.format("|%-30s|""Hello World"); // prints: |Hello World |

指定最大字符数:

String.format("|%.5s|""Hello World"); // prints: |Hello|

字段宽度和最大字符数:

String.format("|%30.5s|""Hello World"); | Hello|

总结

本指南介绍了Java中的字符串格式。涵盖了支持的格式转换符。数字格式和字符串格式都支持多种标志来表示其他格式。感谢大家的阅读。

(文本完,感谢阅读)

每日分享Java技术干货,欢迎关注!

点赞在看就是最大的支持❤️

文章转载自前端新世界,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论