wujianjun 发表于 2013-2-4 22:08:43

java.lang.String.format之使用

/** * 1、String.format(String fmt,Object... objs) * fmt: 格式成什么样的格式 * objs:需要格式化的目录对象支持数值、字符串、日期 * 注意:jdk1.5及其以上版本才有此方法。 ** 2、fmt的编写方式 * ①:常规、整数、浮点类型 * %开始+引用的objs第几个值$(非必选)+0(不足位按0填充,非必选)+产生位数(如果格式化为浮点数则为“总位数.小数位数”,非必选)+类型修饰符 * 如:%1$3d、%1$04d、%2$5.2f * ②:时间类型 * %开始+引用的objs第几个值$(非必选)+时间前缀(t/T)+类型修饰符 * 如:%1$tY、%1$tm、%1$td、%1$tH、%1$tM、%1$tS * 注意:如果不写第二部分(引用的objs第几个值$), 则默认按使用%开始的数量依次增加一(建议写上)。 ** 3、类型修饰符(摘自jdk) *    转换参数类别说明   *--------|----------|----------------------------------- * 'b', 'B'常规如果参数 arg 为 null,则结果为 "false"。如果 arg 是一个 boolean 值或 Boolean,则结果为 String.valueOf() 返回的字符串。否则结果为 "true"。   * 'h', 'H'常规如果参数 arg 为 null,则结果为 "null"。否则,结果为调用 Integer.toHexString(arg.hashCode()) 得到的结果。   * 's', 'S'常规如果参数 arg 为 null,则结果为 "null"。如果 arg 实现 Formattable,则调用 arg.formatTo。否则,结果为调用 arg.toString() 得到的结果。   * 'c', 'C'字符结果是一个 Unicode 字符   * 'd'       整数 结果被格式化为十进制整数   * 'o'       整数结果被格式化为八进制整数   * 'x', 'X'整数结果被格式化为十六进制整数   * 'e', 'E'浮点结果被格式化为用计算机科学记数法表示的十进制数   * 'f'      浮点结果被格式化为十进制数   * 'g', 'G'浮点根据精度和舍入运算后的值,使用计算机科学记数形式或十进制格式对结果进行格式化。   * 'a', 'A'浮点结果被格式化为带有效位数和指数的十六进制浮点数   * 't', 'T'日期/时间   日期和时间转换字符的前缀。请参阅日期/时间转换。   * '%'   百分比结果为字面值 '%' ('\u0025')   * 'n'      行分隔符结果为特定于平台的行分隔符   ** 4、时间类型修饰符(摘自jdk) * 修饰符|说明 * ---------|------------------------------------- * 'H'|24 小时制的小时,被格式化为必要时带前导零的两位数,即 00 - 23。   * 'I'|12 小时制的小时,被格式化为必要时带前导零的两位数,即 01 - 12。   * 'k'|24 小时制的小时,即 0 - 23。   * 'l'|12 小时制的小时,即 1 - 12。   * 'M'|小时中的分钟,被格式化为必要时带前导零的两位数,即 00 - 59。   * 'S'|分钟中的秒,被格式化为必要时带前导零的两位数,即 00 - 60 ("60" 是支持闰秒所需的一个特殊值)。   * 'L'| 秒中的毫秒,被格式化为必要时带前导零的三位数,即 000 - 999。   * 'N'| 秒中的毫微秒,被格式化为必要时带前导零的九位数,即 000000000 - 999999999。   * 'p'| 特定于语言环境的 上午或下午 标记以小写形式表示,例如 "am" 或 "pm"。使用转换前缀 'T' 可以强行将此输出转换为大写形式。   * 'z'| 相对于 GMT 的 RFC 822 格式的数字时区偏移量,例如 -0800。   * 'Z'| 表示时区缩写形式的字符串。Formatter 的语言环境将取代参数的语言环境(如果有)。   * 's'| 自协调世界时 (UTC) 1970 年 1 月 1 日 00:00:00 至现在所经过的秒数,即 Long.MIN_VALUE/1000 与 Long.MAX_VALUE/1000 之间的差值。   * 'Q'| 自协调世界时 (UTC) 1970 年 1 月 1 日 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 等于格里高利历的 92 CE。   * 'y'| 年份的最后两位数,被格式化为必要时带前导零的两位数,即 00 - 99。   * 'j'| 一年中的天数,被格式化为必要时带前导零的三位数,例如,对于格里高利历是 001 - 366。   * 'm'   |月份,被格式化为必要时带前导零的两位数,即 01 - 13。   * 'd'| 一个月中的天数,被格式化为必要时带前导零两位数,即 01 - 31   * 'e'   |一个月中的天数,被格式化为两位数,即 1 - 31。   ** @author jianjun.wu * @createtime Jun 24, 2010 10:31:05 AM * @version 1.0 * @see JDK1.5 **/public class TestString{/** * @author jianjun.wu * @creaetime Jun 24, 2010 10:31:06 AM * @param args */public static void main(String[] args){Calendar c = Calendar.getInstance();System.out.println(String.format("Duke's Birthday: %1$tm %1$te,%1$ty", c));System.out.println(String.format("Now time is %1$tY-%1$tm-%1$td %1$tH:%1$tM:%1$tS:%1$tL:%1$tN:%1$tp:%1$tz:%1$tZ:%1$ts:%1$tQ", new Date()));System.out.println(String.format("number:%1$08.1f--%2$s",5656565.26,"2"));System.out.println(String.format("My name is %1$s.","zhangsan",23));}} 
页: [1]
查看完整版本: java.lang.String.format之使用