现在的位置: 首页 > 综合 > 正文

String.format 的大用场

2013年01月11日 ⁄ 综合 ⁄ 共 4258字 ⁄ 字号 评论关闭

String.format是在JDK1.5中新增的静态方法,功能强。它主要功能是格式化数据,大致分为这些类(常规类型、字符类型、数值类型、日期类型)。它的语法如下:
常规类型、字符类型和数值类型的格式说明符的语法:%[参数索引位置$][转换标识符][最小官渡][.保留精度位数]转换方式

日期语法:%[参数索引位置$][t或T]转换方式

用场:

1、将第一个参数转换为字符串,类似MessageFormat.format语法

 

String.format("后台流水号 %1$s","123");

返回:
   后台流水号 123

 

2、将两个参数格式化为字符串,并连接在一起

 

String.format("%1$s%2$s",1234,5678);

返回12345678

 

3、指向第一个参数转换为字符串

 String.format("%s",1234,5678);
 
 返回:
   1234 

4、将第一个格式化为“1234” 第二个格式化005678

String.format("%s%06d",1234,5678);

返回:
  1234005678

5、将明文替换成'*'符

String password = "howto";
System.out.println(password);
String result = String.format("%" + password.length() + "s", "");
System.out.println(result);
System.out.println(result.replace(' ', '*'));  

输出:
   howto
        
  *****

6、将字符串拉长为20个长度,非空字符左对齐

String.format("%1$-" + 20 + "s", "Howto") 

  输出: Howto               *

7、将字符串拉长为25个长度,非空字符右对齐

String.format("%1$#" + n + "s", s)

输出:
                    Howto*

8、字符串补齐

 

6、将字符串拉长为20个长度,非空字符左对齐

String.format("%1$-" + 20 + "s", "Howto") 

  输出: Howto               *

7、将字符串拉长为25个长度,非空字符右对齐

String.format("%1$#" + n + "s", s)

输出:
                    Howto*

8、字符串补齐

System.out.println(String.format("%10s", "howto").replace(' ', '*'));
System.out.println(String.format("%-10s", "howto").replace(' ', '*'));

输出:
    *****howto
    howto*****

9、各种用法:9、各种用法:

//转换为科学记数法表示
//输出:1.234568e+09
System.out.println(String.format("%1$e", 1234567890.123456789));
//转换为科学记数法表示,长度为20,用0填充
//输出:000000001.234568e+09
System.out.println(String.format("%1$020e", 1234567890.123456789));
//根据结果制动识别使用转换器e或f
//输出:12345.1
System.out.println(String.format("%1$g", 12345.123456789));
//转换为16进制的浮点数
//输出:0x1.81c8fcd6e9b9dp13
System.out.println(String.format("%1$a", 12345.123456789));
//转换结果保留默认小数位,3位数字用,隔开,转换为十进制表示
//输出:1,234,567,890.123457
System.out.println(String.format("%1$,f", 1234567890.123456789));
//转换结果保留默认小数位,3位数字用,隔开
//输出:1,234,567,890.123457
System.out.println(String.format("%1$,f", 1234567890.123456789));
//转换结果是保留10位精度.转换成十进制表示方式
//输出:1234567890.1234567000
System.out.println(String.format("%1$.10f", 1234567890.123456789));
//转换结果是保留100位精度,没有精度丢失,整数位3个就用,隔开
//输出:12,345,678,909.1234567890123456789000000000000000000000000000000000000000000000000000000000000000000000000000000000
System.out.println(String.format("%1$,.100f", new BigDecimal("12345678909.1234567890123456789")));
//转换结果保留5位小数,3位数字用,隔开
//输出:1,234,567,890.12346
System.out.println(String.format("%1$,.5f", 1234567890.123456789));



//格式化成数值表示使用十进制
//输出:"-31"
System.out.println(String.format("%1$d", -31)); 
//格式化成数值表示使用八进制
//输出:"37777777741"
System.out.println(String.format("%1$o", -31)); 
//格式化成数值表示使用十进制,总长度显示19位
//输出:"                -31"
System.out.println(String.format("%1$19d", -31));
//格式化成数值表示使用十进制,总长度显示19位,左靠齐
//输出:"-31                "
System.out.println(String.format("%1$-19d", -31));
//格式化成数值表示,使用十进制,
//输出:"-00000031"
System.out.println(String.format("%1$09d", -31));
//每3位数字用,隔开,总长度9位,
//输出:"   -3,123"
System.out.println(String.format("%1$,9d", -3123));
//每3位数字用,隔开,用0填充总长度9位,
//输出:"-0003,123"
System.out.println(String.format("%1$,09d", -3123));
//每3位数字用,用0填充总长度9位,
//输出:"     (3123)"
System.out.println(String.format("%1$(9d", -3123));
//输出:"      -31"
System.out.println(String.format("%1$ 9d", -31));



//转换为字符
//输出:"a"
System.out.println(String.format("%1$c", 97));
//转换为字符,十位
//输出:"         鄒"
System.out.println(String.format("%1$10c", '鄒'));
//转换为字符,十位,靠左
//输出:"鸿"
System.out.println(String.format("%1$-10c", '鸿'));

//输出:12.123456%
System.out.println(String.format("%1$f%%", 12.123456));
//留取4位小数,4舍5入
//输出:"12.1235%"
System.out.println(String.format("%1$.4f%%", 12.123456));
BigDecimal a = new BigDecimal("12.12"),b = new BigDecimal("13.13");
BigDecimal c = a.divide(b,28,BigDecimal.ROUND_HALF_UP);
//保留28位小数
//输出:0.9230769230769230769230769231
System.out.println(c + "");
//格式为保留28位小数
//输出:0.9230769230769230769230769231
System.out.println(String.format("%1$.28f", c));



long c = System.currentTimeMillis();
//输出:2012-05-09 15:14:28
System.out.println(String.format("%1$tY-%1$tm-%1$td %1$tH:%1$tM:%1$tS", c));
//输出:12-05-09 03:14:28 下午 五月 星期三
System.out.println(String.format("%1$ty-%1$tm-%1$td %1$tI:%1$tM:%1$tS %1$tp %1$tb %1$ta", c));
//输出:2009-06-14 01:39:35
System.out.println(String.format("%1$tF %1$tT", 1244943575031l));



//输出:"false true true true"
System.out.println(String.format("%b %b %b %b", null,"","true",true));
String pattern = "%1$s 在 %4$tF %4$tT 说了 \"%1$s 爱 %2$s %3$d 年\"";
//输出:"mingming 在 2012-05-09 15:15:31 说了 "mingming 爱 shuilian 10000 年""
System.out.println(String.format(pattern, "mingming","shuilian",10000,System.currentTimeMillis()));

 

转载自:http://www.cnblogs.com/vwpolo/archive/2012/05/09/2493463.html

 

抱歉!评论已关闭.