参考http://www.cnblogs.com/linjiqin/archive/2013/06/21/3147943.html
String.format或者System.out.printf都可以用来格式化字符串,格式为%[argument_index$][flags][width][.precision]conversion
package com.demo.test;
import java.util.Date;
import java.util.Locale;
public class StringFormatDemo {
public static void main(String[] args) {
String str = "456";
int num = 123;
Date date = new Date();
/*
%s: 字符串类型,如:"ljq"
%b: 布尔类型,如:true
%d: 整数类型(十进制),如:99
%f: 浮点类型,如:99.990000(默认保留6位小数)
%%: 百分比类型,如:%
%n: 换行符(\n也可以换行)
*/
System.out.printf("%s-%b-%n-%d-%f-%%-\n", str, true, num, 123.5);
System.out.println();
//空白填充
System.out.println(String.format("|%05d|", num));//|00123|
System.out.println(String.format("|% 5d|", num));//| 123|
System.out.println(String.format("|%5d|", num)); //| 123|
System.out.println(String.format("|%-5d|", num));//|123 |
System.out.println(String.format("|%+5d|", num));//| +123|
System.out.println(String.format("|%+08d|", num));//|+0000123|
// System.out.println(String.format("|%-05d|", num));
// System.out.println(String.format("|%0-5d|", num));
System.out.println(String.format("|%d|", num)); //|123|
// System.out.println(String.format("|%05s|", str));
// System.out.println(String.format("|% 5s|", str));
System.out.println(String.format("|%5s|", str)); //| 456|
System.out.println(String.format("|%-5s|", str));//|456 |
System.out.println(String.format("|%s|", str)); //|456|
//argument_index从1开始,可以复用某个参数
System.out.println(String.format("|%2$5s|%s%s%s", "a","b","c","d"));//| b|abc
System.out.println();
/*
1、日期时间格式化
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
2、日期格式化
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
3、时间格式化
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
*/
//如果不这么设置的话默认会输出中文,那么如果要输出英文只能在每个format语句中加locale很麻烦,这样最快
Locale.setDefault(Locale.ENGLISH);
// System.out.printf("%t%n", date);//Exception: java.util.UnknownFormatConversionException
System.out.printf("%tc %n", date);//c: 包括全部日期和时间信息 星期六 十月 27 14:21:20 CST 2007
System.out.printf("%tF %n", date);//F: "年-月-日"格式,如:2007-10-27
System.out.printf("%tD %n", date);//D: "月/日/年"格式,如:10/27/07
System.out.printf("%tr %n", date);//r: "HH:MM:SS PM"格式(12时制),如:02:25:51 下午
System.out.printf("%tT %n", date);//T: "HH:MM:SS"格式(24时制),如:14:28:16
System.out.printf("%tR %n", date);//R: "HH:MM"格式(24时制),如:14:28
System.out.println();
System.out.printf("%th \n", date);//b或者h: 月份简称(中:十月, 英:Oct)
System.out.printf("%tb \n", date);//b或者h: 月份简称(中:十月, 英:Oct)
System.out.printf("%tB \n", date);//B: 月份全称(中:十月, 英:October)
System.out.printf("%tA \n", date);//a: 星期的简称(中:星期六, 英:Sat)
System.out.printf("%ta \n", date);//A: 星期的全称(中:星期六, 英:Saturday)
System.out.printf("%tA \n", date);//C: 年的前两位数字(不足两位前面补0),如:20
System.out.printf("%tC \n", date);//y: 年的后两位数字(不足两位前面补0),如:07
System.out.printf("%tY \n", date);//Y: 4位数字的年份(不足4位前面补0),如:2007
System.out.printf("%tj \n", date);//j: 一年中的天数(即年的第几天),如:300
System.out.printf("%tm \n", date);//m: 两位数字的月份(不足两位前面补0),如:10
System.out.printf("%td \n", date);//d: 两位数字的日(不足两位前面补0),如:27
System.out.printf("%te \n", date);//e: 月份的日(前面不补0),如:5
System.out.println();
System.out.printf("%tH %n", date);//H: 2位数字24时制的小时(不足2位前面补0),如:15
System.out.printf("%tI %n", date);//I: 2位数字12时制的小时(不足2位前面补0),如:03
System.out.printf("%tk %n", date);//k: 2位数字24时制的小时(前面不补0),如:15
System.out.printf("%tl %n", date);//l: 2位数字12时制的小时(前面不补0),如:3
System.out.printf("%tM %n", date);//M: 2位数字的分钟(不足2位前面补0),如:03
System.out.printf("%tS %n", date);//S: 2位数字的秒(不足2位前面补0),如:09
System.out.printf("%tL %n", date);//L: 3位数字的毫秒(不足3位前面补0),如:015
System.out.printf("%tN %n", date);//N: 9位数字的毫秒数(不足9位前面补0),如:562000000
System.out.printf("%tp %n", date);//p: 小写字母的上午或下午标记(中:下午, 英:pm)
System.out.printf("%tz %n", date);//z: 相对于GMT的RFC822时区的偏移量,如:+0800
System.out.printf("%tZ %n", date);//Z: 时区缩写字符串,如:CST
System.out.printf("%ts %n", date);//s: 1970-1-1 00:00:00 到现在所经过的秒数,如:1193468128
System.out.printf("%tQ %n", date);//Q: 1970-1-1 00:00:00 到现在所经过的毫秒数,如:1193468128984
System.out.println();
//forDigit是将数字转为其代表的字符,取值范围是:0 <= digit < radix,如果不是该范围,则会返回空
System.out.println(Character.forDigit(1, 10));//1
System.out.println(Character.forDigit(10, 10));//(空)
System.out.println(Character.forDigit(16, 10));//(空)
//getNumericValue是将字符转为数字,取值范围是0-9A-Za-z,其他都会返回-1
System.out.println(Character.getNumericValue('0'));//0
System.out.println(Character.getNumericValue('1'));//1
System.out.println(Character.getNumericValue('='));//-1
System.out.println(Character.getNumericValue('a'));//10
System.out.println(Character.getNumericValue('f'));//15
System.out.println(Character.getNumericValue('g'));//16
System.out.println(Character.getNumericValue('x'));//33
System.out.println(Character.getNumericValue('z'));//35
System.out.println(Character.getNumericValue('Z'));//35
System.out.println(Character.getNumericValue('\r'));//-1
System.out.println(Character.getNumericValue('\n'));//-1
}
}