java 格式字符串

格式字符串的语法

产生格式化输出的每个方法都需要格式字符串 和参数列表。格式字符串是一个 String,它可以包含固定文本以及一个或多个嵌入的格式说明符。

 

调用方法

public Formatter format(String format, Object ... args) {
    return format(l, format, args);
    }

例如

String s  = new Formatter().format("%2$-5.2f %1$2s", "123", 456.7).toString();

 

格式字符串结构

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

 

源代码中正则字符串

 %(\\d+\\$)?([-#+ 0,(\\<]*)?(\\d+)?(\\.\\d+)?([tT])?([a-zA-Z%])


 1.argument_index

          可选的 argument_index 是一个十进制整数,用于表明参数在参数列表中的位置。

          第一个参数由 "1$" 引用,第二个参数由 "2$" 引用,依此类推。

          可选的 flags 是修改输出格式的字符集。有效标志的集合取决于转换类型。

 

 

2.flag

        下表总结了受支持的标志。y 表示该标志受指示参数类型支持。 标志 常规 字符 整数 浮点 日期/时间 说明

           '-'   结果将是左对齐的(后面补充空格),否则(前面补充空格),

                                                                    与width设置有关 format("%1$-8s", "5689").toString()

           '#'  结果应该使用依赖于转换类型的替换形式,

                       若是OCTAL_INTEGER (8进制),以0开始,

                             HEXADECIMAL_INTEGER(十进制),以0x开始      format("%1$#x", 5689).toString()
           '+'  结果总是包括一个符号 ,对于数字型(d)加入一个正号或负号 format("%1$+d ", 5689).toString()
           ' '   结果 若是正值,结果中将包括一个前导空格(相当于+)       format("%1$ d ", 5689).toString()

           '('   结果若是负值,则用()括起来 ,若没有(属性,负值用-表示 format("%1$(d ", -5689).toString()
           '0'  结果用0补充(针对数字形,并且与width设置有关)  format("%1$09d ", -5689).toString()
           ','   结果用逗号分隔(数字型d)           format("%1$,d ", -5689).toString()

           <   代表前一个引用,即表达式中前一个引用   format("%1$d%1$<d", -5689).toString()

 

3.width

可选 width 是一个非负十进制整数,表明要向输出中写入的最少字符数。

 

4.precision

可选 precision 是一个非负十进制整数,通常用来限制字符数。特定行为取决于转换类型。保留小说点

 

5.conversion

所需的 conversion 是一个表明应该如何格式化参数的字符。给定参数的有效转换集合取决于参数的数据类型。

 

 

'b', 'B'      常规    如果参数 arg 为 null,则结果为 "false"。
                         如果 arg 是一个 boolean 值或 Boolean,

                         则结果为 String.valueOf() 返回的字符串。否则结果为 "true"。'B'  返回结果是大写
'h', 'H'     常规     如果参数 arg 为 null,则结果为 "null"。

                         否则,结果为调用 Integer.toHexString(arg.hashCode()) 得到的结果。 'H'  返回结果是大写
's', 'S'     常规     如果参数 arg 为 null,则结果为 "null"。

                         如果 arg 实现 Formattable,则调用 arg.formatTo。

                         否则,结果为调用 arg.toString() 得到的结果。'S'  返回结果是大写
'c', 'C'     字符     结果是一个 Unicode 字符   'C'  返回结果是大写
'd'          整数     结果被格式化为十进制整数 
'o'          整数     结果被格式化为八进制整数
'x', 'X'     整数     结果被格式化为十六进制整数  'X'  返回结果是大写
'e', 'E'     浮点     结果被格式化为用计算机科学记数法表示的十进制数  'E'  返回结果是大写
'f'           浮点     结果被格式化为十进制数
'g', 'G'    浮点     根据精度和舍入运算后的值, 使用计算机科学记数形式或十进制格式对结果进行格式化。
'a', 'A'    浮点     结果被格式化为带有效位数和指数的十六进制浮点数
't', 'T'     日期/时间     日期和时间转换字符的前缀。请参阅日期/时间转换。'T'  返回结果是大写
'%'     百分比     结果为字面值 '%' ('\u0025')
'n'     行分隔符     结果为特定于平台的行分隔符

 

日期/时间转换

 

   'H' 24 小时制的小时,被格式化为必要时带前导零的两位数,即 00 - 23。

   'I' 12 小时制的小时,被格式化为必要时带前导零的两位数,即 01 - 12。

   'k' 24 小时制的小时,即 0 - 23。

   'l' 12 小时制的小时,即 1 - 12。

   'M' 小时中的分钟,被格式化为必要时带前导零的两位数,即 00 - 59。

   'N' 秒中的毫微秒,被格式化为必要时带前导零的九位数,即 000000000 - 999999999。

   'L' 秒中的毫秒,被格式化为必要时带前导零的三位数,即 000 - 999。

   'Q' 自协调世界时 (UTC) 1970 年 1 月 1 日 00:00:00 至现在所经过的毫秒数,

     即 Long.MIN_VALUE 与     Long.MAX_VALUE 之间的差值。

   'p' 特定于语言环境的 上午或下午 标记以小写形式表示,例如 "am" 或 "pm"。

      使用转换前缀 'T' 可以强行将此输出转换 为大写形式。

   's' 自协调世界时 (UTC) 1970 年 1 月 1 日 00:00:00 至现在所经过的秒数,

        即 Long.MIN_VALUE/1000 与 Long.MAX_VALUE/1000 之间的差值。

   'S' 分钟中的秒,被格式化为必要时带前导零的两位数,即 00 - 60 ("60" 是支持闰秒所需的一个特殊值)。

   'T' 24 小时制的时间,被格式化为 "%tH:%tM:%tS"。(24 hour hh:mm:ss)

   'z' 相对于 GMT 的 RFC 822 格式的数字时区偏移量,例如 -0800。

   'Z' 表示时区缩写形式的字符串。Formatter 的语言环境将取代参数的语言环境(如果有)。

   'a' 特定于语言环境的星期几简称,例如 "Sun" 和 "Mon"。

   'A' 特定于语言环境的星期几全称,例如 "Sunday" 和 "Monday"。

   'b' 特定于语言环境的月份简称,例如 "Jan" 和 "Feb"。

   'B' 特定于语言环境的月份全称,例如 "January" 和 "February"。

   'C' 除以 100 的四位数表示的年份,被格式化为必要时带前导零的两位数,即 00 - 99。

   'd' 一个月中的天数,被格式化为必要时带前导零两位数,即 01 - 31。

   'e' 一个月中的天数,被格式化为两位数,即 1 - 31。

   'h' 与 'b' 相同。

   'j' 一年中的天数,被格式化为必要时带前导零的三位数,例如,对于格里高利历是 001 - 366。

   'm' 月份,被格式化为必要时带前导零的两位数,即 01 - 13。

   'y' 年份的最后两位数,被格式化为必要时带前导零的两位数,即 00 - 99。

   'Y' 年份,被格式化为必要时带前导零的四位数(至少),例如,0092 等于格里高利历的 92 CE。

   'r' 12 小时制的时间,被格式化为 "%tI:%tM:%tS %Tp" (hh:mm:ss [AP]M)。

     上午或下午标记 ('%Tp') 的位置可能与语言环境有关。

   'R' 24 小时制的时间,被格式化为 "%tH:%tM"。(hh:mm same as %H:%M)

   'c' 日期和时间,被格式化为 "%ta %tb %td %tT %tZ %tY",例如 "Sun Jul 20 16:17:00 EDT 1969"。

   'D' 日期,被格式化为 "%tm/%td/%ty"。(mm/dd/yy)

   'F' ISO 8601 格式的完整日期,被格式化为 "%tY-%tm-%td"。

你可能感兴趣的:(java 格式字符串)