赞
踩
String类的format()方法用于创建格式化的字符串以及连接多个字符串对象。
有2个重载的方法:
1、static String format(Locale l, String format, Object... args)
使用指定的语言环境、字符串格式和参数生成格式化的新字符串
2、static String format(String format, Object... args)
使用指定的字符串格式和参数生成格式化的新字符串
locale:指定的语言环境参数。
format:字符串格式参数,有很多种转换符选项,例如:日期、整数、浮点数等。转换符见下表
args...:字符串格式中由格式说明符引用的参数。对整数进行格式化:%[index$][标识][最小宽度]转换方式
对浮点数进行格式化:%[index$][标识][最少宽度][.精度]转换方式
| 转 换 符 | 说 明 | 示 例 |
| %s | 字符串类型 | "mingrisoft" |
| %c | 字符类型 | 'm' |
| %b | 布尔类型 | true |
| %d | 整数类型(十进制) | 99 |
| %x | 整数类型(十六进制) | FF |
| %o | 整数类型(八进制) | 77 |
| %f | 浮点类型 | 99.99 |
| %a | 十六进制浮点类型 | FF.35AE |
| %e | 指数类型 | 9.38e+5 |
| %g | 通用浮点类型(f和e类型中较短的) | |
| %h | 散列码 | |
| %% | 百分比类型 | % |
| %n | 换行符 | |
| %tx | 日期与时间类型(x代表不同的日期与时间转换符 |
实例:
- public class StringFormatDemo1 {
- public static void main(String arg[]) {
-
- String s = String.format("%s%s %c %b %d %x %o %f %d%%", "Hello", "World", 'a', true, 10, 10, 10, 10.0, 10);
- System.out.println(s);
- /*
- HelloWorld a true 10 a 12 10.000000 10%
- */
- }
- }
字符串格式参数还可以与各种标志组合在一起,生成各种格式的字符串,这些标志见下表:
| 标 志 | 说 明 | 示 例 | 结 果 |
| + | 为正数或者负数添加符号 | ("%+d",15) | +15 |
| − | 左对齐 | ("%-5d",15) | |15 | |
| 0 | 数字前面补0 | ("%04d", 99) | 0099 |
| 空格 | 在整数之前添加指定数量的空格 | ("% 4d", 99) | | 99| |
| , | 以“,”对数字分组 | ("%,f", 9999.99) | 9,999.990000 |
| ( | 使用括号包含负数 | ("%(f", -99.99) | (99.990000) |
| # | 如果是浮点数则包含小数点,如果是16进制或8进制则添加0x或0 | ("%#x", 99) ("%#o", 99) | 0x63 0143 |
| < | 格式化前一个转换符所描述的参数 | ("%f和%<3.2f", 99.45) | 99.450000和99.45 |
| $ | 被格式化的参数索引 | ("%1$d,%2$s", 99,"abc") | 99,abc |
实例:
- public class StringFormatDemo2 {
- public static void main(String arg[]) {
-
- //+:为正数或者负数添加符号
- String s = String.format("%+d %+d %d", 0, -10, -10);
- System.out.println(s);
- /*
- +0 -10 -10
- */
-
- //0:数字前面补0,后面加数字为总位数
- //<:格式化前一个转换符所描述的参数
- s = String.format("%01d %<02d %<03d %<04d", 10);
- System.out.println(s);
- /*
- 10 10 010 0010
- */
-
- //,:以“,”对数字分组
- s = String.format("%,d %,f", 100000, 100000.0);
- System.out.println(s);
- /*
- 100,000 100,000.000000
- */
-
- //$:被格式化的参数索引
- s = String.format("%1$s %3$d %2$s", "abc", "def", 10);
- System.out.println(s);
- /*
- abc 10 def
- */
-
- //[最小宽度]:在整数转换符中不加空格、或加1个空格,以指定整数的总位数
- s = String.format("|%3d| |% 3d| |% 4d|", 10, 20, 30);
- System.out.println(s);
- /*
- | 10| | 20| | 30|
- */
-
- //[最小宽度]:在字符串转换符中加空格,以指定字符串的总位数
- s = String.format("|%3s| |%<3s| |%<3s|", "a");
- System.out.println(s);
- /*
- | a| | a| | a|
- */
-
-
- }
- }

%tx转换符中的x代表另外的处理日期和时间格式的转换符,它们的组合能够将日期和时间格式化成多种格式。
日期和时间组合转换符:
| 转 换 符 | 说 明 | 示 例 |
| c | 包括全部日期和时间信息 | 星期六 十月 27 14:21:20 CST 2007 |
| F | “年-月-日”格式 | 2007-10-27 |
| D | “月/日/年”格式 | 10/27/07 |
| r | “HH:MM:SS PM”格式(12时制) | 02:25:51 下午 |
| T | “HH:MM:SS”格式(24时制) | 14:28:16 |
| R | “HH:MM”格式(24时制) | 14:28 |
| 转 换 符 | 说 明 | 示 例 |
| b或者h | 月份简称 | 中:十月 英:Oct |
| B | 月份全称 | 中:十月 英:October |
| a | 星期的简称 | 中:星期六 英:Sat |
| A | 星期的全称 | 中:星期六 英:Saturday |
| C | 年的前两位数字(不足两位前面补0) | 20 |
| y | 年的后两位数字(不足两位前面补0) | 07 |
| Y | 4位数字的年份(不足4位前面补0) | 2007 |
| j | 一年中的天数(即年的第几天) | 300 |
| m | 两位数字的月份(不足两位前面补0) | 10 |
| d | 两位数字的日(不足两位前面补0) | 27 |
| e | 月份的日(前面不补0) | 5 |
| 转 换 符 | 说 明 | 示 例 |
| H | 2位数字24时制的小时(不足2位前面补0) | 15 |
| I | 2位数字12时制的小时(不足2位前面补0) | 03 |
| k | 2位数字24时制的小时(前面不补0) | 15 |
| l | 2位数字12时制的小时(前面不补0) | 3 |
| M | 2位数字的分钟(不足2位前面补0) | 03 |
| S | 2位数字的秒(不足2位前面补0) | 09 |
| L | 3位数字的毫秒(不足3位前面补0) | 015 |
| N | 9位数字的毫秒数(不足9位前面补0) | 562000000 |
| p | 小写字母的上午或下午标记 | 中:下午 英:pm |
| z | 相对于GMT的RFC822时区的偏移量 | +0800 |
| Z | 时区缩写字符串 | CST |
| s | 1970-1-1 00:00:00 到现在所经过的秒数 | 1193468128 |
| Q | 1970-1-1 00:00:00 到现在所经过的毫秒数 | 1193468128984 |
实例:
- import java.util.*;
-
- public class StringFormatDemo3 {
- public static void main(String arg[]) {
-
- Date date = new Date();
-
- //c:包括全部日期和时间信息
- String s = String.format("%tc", date);
- System.out.println(s);
- /*
- 星期二 十二月 10 22:34:51 CST 2013
- */
- //F:“年-月-日”格式
- s = String.format("%tF", date);
- System.out.println(s);
- /*
- 2013-12-10
- */
- //D:“月/日/年”格式
- s = String.format("%tD", date);
- System.out.println(s);
- /*
- 12/10/13
- */
- //r:“HH:MM:SS PM”格式(12时制)
- s = String.format("%tr", date);
- System.out.println(s);
- /*
- 10:34:51 下午
- */
- //T:“HH:MM:SS”格式(24时制)
- s = String.format("%tT", date);
- System.out.println(s);
- /*
- 22:34:51
- */
- //R:“HH:MM”格式(24时制)
- s = String.format("%tR", date);
- System.out.println(s);
- /*
- 22:34
- */
-
- //a:星期的简称 A:星期的全称(全称只对英文语言环境有效:全Saturday、简Sat)
- s = String.format("%ta", date);
- System.out.println(s);
- /*
- 星期二
- */
-
- //b或h:月份简称 B:月份全称(全称只对英文语言环境有效)
- //t:格式化前一个转换符所描述的参数
- s = String.format(Locale.US, "%th %<tB", date);
- System.out.println(s);
- /*
- Dec December
- */
-
- //Y:4位数字的年份(不足4位前面补0)y:年的后两位数字(不足两位前面补0)
- s = String.format("%ty %tY", date, date);
- System.out.println(s);
- /*
- 13 2013
- */
-
-
- //j:一年中的天数(即年的第几天)
- //m:两位数字的月份(不足两位前面补0)
- //d:两位数字的日(不足两位前面补0)
- //e:月份的日(前面不补0)
- s = String.format("%tj %<tm %<td %<te", date);
- System.out.println(s);
- /*
- 344 12 10 10
- */
-
- //H:2位数字24时制的小时(不足2位前面补0)
- //I:2位数字12时制的小时(不足2位前面补0)
- //k:2位数字24时制的小时(前面不补0)
- //l:2位数字12时制的小时(前面不补0)
- s = String.format("%tH %<tI %<tk %<tl", date);
- System.out.println(s);
- /*
- 22 10 22 10
- */
-
- //M:2位数字的分钟(不足2位前面补0)
- //S:2位数字的秒(不足2位前面补0)
- //L:3位数字的毫秒(不足3位前面补0)
- //N:9位数字的毫秒数(不足9位前面补0)
- //p:小写字母的上午或下午标记
- //s:1970-1-1 00:00:00 到现在所经过的秒数
- //Q:1970-1-1 00:00:00 到现在所经过的毫秒数
- s = String.format("%tM %<tS %<tL %<tN %<ts %<tQ", date);
- System.out.println(s);
- /*
- 34 51 375 375000000 1386686091 1386686091375
- */
-
-
-
- }
- }
-
-

Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。