String的format方法String.format(String format, Object ... args)很有用,String format参数是这样的:%[argument_index$][flags][width][.precision]conversion
格式化日期
String.format("%tY", new Date()) //2011
String.format("%tm", new Date()) //03
String.format("%tF", new Date()) //2011-03-04
String.format("%tR", new Date()) //15:49
String.format("%tT", new Date()) //15:49:34
String.format("%tc", new Date()) //星期五 三月 04 15:49:34 CST 2011
String.format("%tD", new Date()) //03/04/11
String.format("%td", new Date()) //04
//格式化日期06-07-2016 -可以换成/,%1$tm等的位置也可以交换
public static void main(String[] args) {
String s = String.format("%1$tm-%1$td-%1$tY", new Date());
System.out.println(s);
}
占位符%1$s
public static void main(String[] args) { String s = String.format("这位是%2$s,那位是%1$s", "小明","小黄"); System.out.println(s); }
格式化数字
//格式化数字 public static void main(String[] args) { //%[argument_index$][flags][width][.precision]conversion //%[argument_index$] : %1$ //flag:, 金额千分位隔开 //conversion : d 代表十进制展示 String s = String.format("%1$,d", 12302562); System.out.println(s); }
小数点后保留两位
//精度2位,保存到小数点后2位 public static void main(String[] args) { //%[argument_index$][flags][width][.precision]conversion //%[argument_index$] : %1$ //[.precision] : .2f f表示传入的数字是浮点型 String s = String.format("%1$.2f", 12.12555); System.out.println(s); }
位数不够向前补0
//位数不够向前补0 public static void main(String[] args) { //%[argument_index$][flags][width][.precision]conversion //%[argument_index$] : %1$ //[flags] : 0 不够了补0 //[width] : 5 字符串长度为5 //conversion : d 结论被格式化为十进制整数 String s = String.format("%1$05d", 123); System.out.println(s); }
位数不够后面补空格,包含中文也可以,如"java格式化"
//位数不够补空格 public static void main(String[] args) { //%[argument_index$][flags][width][.precision]conversion //%[argument_index$] : %1$ //[flags] : - 在最小宽度内左对齐 //[width] : 8 8位 //conversion : s 代表字符串 String s = String.format("%1$-8s", "abd"); System.out.println(s); //char[] charArray = s.toCharArray(); //System.out.println("charArray.length = "+ charArray.length);