1、引入Demo
package jdk.text;
import java.text.*;
import java.util.Date;
/**
* Created by yesh on 2015/4/1.
*/
public class TestMessageFormat {
public static void main(String[] args) {
formatText();
formatNumber();
formatDate();
subFormat();
}
/***
* 对应的{0},{1},{2},{3},{4},{5},{6}
* 为{"一","二","三","四","五","六","日"}
*/
public static void formatText(){
String message = "今天是星期{6}";
String [] day={"一","二","三","四","五","六","日"};
//输出结果为“今天是星期日”
System.out.println(MessageFormat.format(message,day));
}
public static void formatNumber(){
String message = "圆周率是{0,number,#.#}";
Double yl[] = {new Double(3.1415)};
//输出3.1415
System.out.println(MessageFormat.format(message,yl));
}
/***
* number:调用NumberFormat进行格式化
* date:调用DateFormat进行格式化
* time:调用DateFormat进行格式化
* choice:调用ChoiceFormat进行格式化
*/
public static void formatDate(){
String message = "今天是:{0,date,yyyy/MM/dd HH:mm:ss}";
Date date = new Date();
System.out.println(MessageFormat.format(message,date));
}
public static void subFormat(){
DateFormat format = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss");
String message = "今天是:{0}==={1}";
DecimalFormat numFormat = new DecimalFormat("###,###,###");
MessageFormat mf = new MessageFormat(message);
Date date = new Date();
Double d1 = new Double(12345666);
//设置{0}使用的格式化方式和{1}使用的格式化方式
mf.setFormatsByArgumentIndex(new Format[]{format,numFormat});
//输出"今天是:2015/04/01 22:24:24===12,345,666"
System.out.println(mf.format(new Object[]{date,d1}));
}
}
2、常用的数字转换方法(摘抄: http://www.cnblogs.com/fsjohnhuang/p/4095059.html)
1. DecimalFormat
用于格式化十进制实数。通过格式字符串来自定义格式化类型,舍入方式为half-even(四舍五入)。
格式化模式: 正数子模式;负数子模式 ,如 0.00;-0.00 ,简写为 0.00 。
模式中的占位符:
0 ,代表该为位为数字,若不存在则用0填充
# ,代表该为位为数字
, ,代表分隔符, 如模式为 #,# ,那么格式化10时会返回1,0
package jdk.text;
import java.text.DecimalFormat;
/**
* Created by yesh on 2015/4/1.
*/
public class TestDecimalFormat {
public static void main(String[] args) {
useFormat();
use0Format();
}
/**
* 使用#方式来代替
*/
public static void useFormat(){
DecimalFormat format = new DecimalFormat("#.####");
double d = 12.42;
//输出12.42
System.out.println(format.format(d));
}
public static void use0Format(){
DecimalFormat format = new DecimalFormat("#.0000");
double d = 12.42;
//输出12.4200
System.out.println(format.format(d));
}
}
3、ChoiceFormat使用的Demo
package jdk.text;
import java.awt.*;
import java.text.ChoiceFormat;
/**
* Created by yesh on 2015/4/1.
*/
public class TestChoiceFormat {
public static void main(String[] args) {
//以下2个方法的效果是一样的
testChoicePattern();
testChoiceLimit();
}
public static void testChoicePattern(){
String pattern = "0#[0,3)|3#[3,6)|6#[6,9)|9#[9]";
ChoiceFormat format = new ChoiceFormat(pattern);
//输出的结果是
// 0=[0,3)|1=[0,3)|2=[0,3)|3=[3,6)|4=[3,6)|5=[3,6)|6=[6,9)|7=[6,9)|8=[6,9)|9=[9]|
for(int i=0;i<10;i++){
System.out.print(i+"="+format.format(i)+"|");
}
}
public static void testChoiceLimit(){
double limit[] = {0,3,6,9};
String [] mes = {"[0,3)","[3,6)","[6,9)","[9]"};
ChoiceFormat format = new ChoiceFormat(limit,mes);
//输出的结果是
// 0=[0,3)|1=[0,3)|2=[0,3)|3=[3,6)|4=[3,6)|5=[3,6)|6=[6,9)|7=[6,9)|8=[6,9)|9=[9]|
for(int i=0;i<10;i++){
System.out.print(i+"="+format.format(i)+"|");
}
}
}