该类提供了对布局调整和对齐的支持,对数字、字符串和日期/时间数据的常用格式,以及本地特定的输出。支持常见的java类型,如byte、bigdecimal和calendar。通过formattable接口为任意的用户类型提供有限的格式化定制。
格式化器对于多线程访问不一定安全。线程安全是可选的。
举例说明:
stringbuilder sb = new stringbuilder(); // nd all output to the appendable object sb formatter formatter = new formatter(sb, locale.us); // 显示参数索引可用于重新排序输出。 formatter.format("%4$2s %3$2s %2$2s %1$2s", "a", "b", "c", "d") // -> " d c b a" // 可选作为第一个参数的语言环境可用于获取特定于语言环境的数字格式。可以给出精度和宽度,以便对数值进行舍入与对齐。 formatter.format(locale.france, "e = %+10.4f", math.e); // -> "e = +2,7183" // '(' 数字标志可用于用小括号而不是减号来格式化负数。 组别分隔符会自动插入。 formatter.format("amount gained or lost since last sta美丽的夜晚te妈妈不是我的佣人ment: $ %(,.2f", balancedelta); // -> "amount gained or lost since last statement: $ (6,217.58)"
如以下调用所示,存在用于常见格式化请求的便捷方法:
// 写一个格式化的字符串到 system.out. system.out.format("local time: %tt", calendar.getinstance()); // -> "local time: 13:34:18" // 将格式化的输出写到 system.err. system.err.printf("unable to open file '%1$s': %2$s", filename, exception.getmessage()); // -> "unable to open file 'food': no such file or directory"
像 c语言的sprintf(3)
,字符串可以使用静态方法格式化string.format
:
// 格式化一个包含日期的字符串 import java.util.calendar; import java.util.gregoriancalendar; import static java.util.calendar.*; calendar c = new gregoriancalendar(1995, may, 23); string s = string.format("duke's birthday: %1$tb %1$te, %1$ty", c); // -> s == "duke's birthday: may 23, 1995"
*每个产生格式化输出的方法都需要一个格式字符串和一个参数列表。
格式字符串是一个string
可能包含固定文本和一个或多个嵌入格式说明符的字符串。
https://docs.oracle.com/en/java/java/11/docs/api/java.ba/java/util/formatter.html#syntax
calendar c = ...;string s = string.format("duke's birthday: %1$tm %1$te,%1$ty", c);
此格式字符串是该format
方法的第一个参数。它包含三个格式说明符“%1$tm
”、“%1$te
”和“%1$ty
”,它们指示应如何处理参数以及应在文本中插入的位置。格式字符串的其余部分是固定文本"dukes birthday: "
,包括任何其他空格或标点符号。参数列表包含在格式字符串之后传递给方法的所有参数。
通用、字符和数字类型的格式说明符具有以下语法:
%[argument_index$][flags][width][.precision]conversion
可选的argument_index是一个十进制的整数,表示参数在参数列表中的位置。第一个参数用 “1$”引用,第二个用 “2$”引用,等等。
可选的flags是一组用于修改输出格式的字符。有效标志的集合取决于转换的情况。
可选的width是一个正的十进制整数,表示要写入输出的最小字符数。
可选的precision是一个非负的十进制整数,通常用于限制字符的数量。具体行为取决于转换的情况。
所需的conversion是一个字符,表示参数应该如何被格式化。一个给定参数的有效转换集取决于该参数的数据类型。
用于表示日期和时间的类型的格式说明符具有以下语法:%[argument_index$][flags][width]conversion
可选的argument_index、flags和width定义如上。
所需的conversion是两个字符序列。第一个字符是't'
或't'
。第二个字符表示要使用的格式。这些字符与 gnudate
和 posixstrftime(3c)
定义的字符相似但不完全相同。
与参数不对应的格式说明符具有以下语法:
%[flags][width]conversion可选flags和width定义如上。
所需的conversion是指示要在鸡毛信简介输出中插入的内容的字符。
conversion
conversion分为以下几类:
一般- 可应用于任何参数类型字符- 可应用于表示 unicode 字符的基本类型:char
、character
、byte
、byte
、short
和short
.这种转换也可以应用于类型int
和integer当character.isvalidcodepoint(int)
返回true时
数字integral– 可以应用于 java 整数类型:byte
,byte
,short
,shoarctanx导数rt
,int
andinteger
,long
,long
, andbiginteger
(但不是char或者
character
)
浮点- 可应用于 java 浮点类型:float
、float
、double
、double
和bigdecimal
long
、long
、calendar
和date
temporalaccessor
百分比- 产生字面的'%'
('\u0025'
)行分隔符– 生成特定于平台的行分隔符对于类别general、character、numberic、integral和date/time转换,除非另有说明,否则如果参数arg为null
,则结果为 “null
“。
null
,那么结果是 ”fal
“。如果arg是 aboolean
或boolean
,则结果是由 . 返回的字符串string.valueof(arg)
。否则,结果为“真”。‘h’,’h’一般结果是通过调用获得的integer.tohexstring(arg.hashcode())
。‘s’,’s’一般如果神奇的探险之旅300字作文arg实现formattable
,则arg.formatto
调用。否则,通过调用 获得结果arg.tostring()
。‘c’,’c’字符结果是一个 unicode 字符‘d’整型结果被格式化为十进制整数‘o’整型结果被格式化为八进制整数‘x’,’x’整型结果被格式化为十六进制整数‘e’,’e’浮点结果被格式化为计算机科学记数法中的十进制数‘f’浮点结果被格式化为十进制数‘g’,’g’浮点结果使用计算机科学记数法或十进制格式进行格式化,具体取决于精度和舍入后的值。‘a’,’a’浮点结果被格式化为带有有效数和指数的十六进制浮点数。尽管后者属于浮点参数类别 ,但该类型不支持此转换。bigdecimal
‘t’,’t’日期/时间日期和时间转换字符的前缀。请参阅日期/时间转换。‘%’百分结果是字面的'%'
('\u0025'
)‘n’行分隔符结果是特定于平台的行分隔符日期/时间转换
以下日期和时间转换后缀字符是定义给’t’,’t’-这两个conversion的。
以下转换字符用于格式化时间:
'h'
00 - 23
.'i'
01 - 12
.'k'
0 - 23
.'l'
1 - 12
.'m'
00 - 59
.'s'
00 - 60
(“60
”是支持闰秒所需的特殊值)。'l'
000 - 999
.'n'
000000000 - 999999999
.'p'
am
标记,例如“ ”或“pm
”。使用转换前缀't'
会强制此输出为大写。'z'
-0800
.该值将根据夏令时的需要进行调整。对于long
、long
和date
使用的时区是此 java 虚拟机实例的默认时区。'z'
long
、long
和date
使用的时区是此 java 虚拟机实例的默认时区。格式化程序的语言环境将取代参数的语言环境(如果有)。's'
00:00:00
,即long.min_value/1000
到long.max_value/1000
.'q'
00:00:00
,即.long.min_value
long.max_value
以下转换字符用于格式化日期:
'b'
"january"
,例如"february"
.'b'
"jan"
,例如"feb"
.'h'
'b'
。'a'
"sunday"
,"monday"
'a'
"sun"
,"mon"
'c'
100
,格式为两位数,必要时前导零,即00 - 99
'y'
0092
等于ce。92
'y'
00 - 99
.'j'
001 - 366
公历。'm'
01 - 13
.'d'
01 - 31
'e'
1 - 31
.以下转换字符用于格式化常见的日期/时间组合。
'r'
"%th:%tm"
't'
"%th:%tm:%ts"
.'r'
"%ti:%tm:%ts %tp"
.上午或下午标记 ('%tp'
) 的位置可能取决于区域设置。'd'
"%tm/%td/%ty"
.'f'
"%ty-%tm-%td"
.'c'
"%ta %tb %td %tt %tz %ty"
,例如"sun jul 20 16:17:00 edt 1969"
。任何未明确定义为日期/时间转换后缀的字符都是非法的,并为将来的扩展保留。
flags
1取决于 formattable的定义
。
2仅用于'd'
conversion。
3仅适用于'o'
、'x'
和'x'
conversion。
4对于'd'
,'o'
,'x'
, 和'x'
conversions应用于biginteger
或'd'
应用于byte
,byte
,short
,short
,int
和integer
,long
, 和long
。
5仅适用于'e'
、'e'
、'f'
、'g'
和'g'
conversion。
任何未明确定义为标志的字符都是非法的,并为将来的扩展保留。
到此这篇关于java格式字符串的使用的文章就介绍到这了,更多相关java格式字符串内容请搜索www.887551.com以前的文章或继续浏览下面的相关文章希望大家以后多多支持www.887551.com!
本文发布于:2023-04-04 21:29:17,感谢您对本站的认可!
本文链接:https://www.wtabcd.cn/fanwen/zuowen/a4f3fc3483b142e7be4108f0930a5dba.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文word下载地址:解析Java格式字符串的使用.doc
本文 PDF 下载地址:解析Java格式字符串的使用.pdf
留言与评论(共有 0 条评论) |