MessageFormatは、文字列フォーマットを行うためのクラスです。本文はMessageFormatクラスのよくある使い方についてサンプルから学びます。
MessageFormatは何をするか
アプリケーションでは、エンドユーザに表示するメッセージがほとんどは定められたフォーマットに沿って出力されています。
たとえば、
ユーザIDを入力してください。
金額を入力してください。
などのメッセージでは、【を入力してください。】は同じです。
MessageFormatは、このようなメッセージを統一したパターンで簡単にフォーマットすることができます。
MessageFormatの使用方法(手順)
1)メッセージパターンを定義します。
例:{0}を入力してください。
フォーマットしたい要素は{}で囲まれます。
2)置き換えデータを配列に設定し、MessageFormat.formatメソッドでフォーマットします。
例:String message = MessageFormat.format("{0}を入力してください。", new String[]{"ユーザID"});
戻り値は置き換えた後の文字列になります。
java.text.MessageFormat構造
java.text.Format
�java.text.MessageFormat
■コンストラクタ
◇ MessageFormat(String pattern)
◇ MessageFormat(String pattern, Locale locale)
パラメータ pattern:メッセージフォーマット・パターン
パラメータ locale:ロケール
■MessageFormat主たるメソッド
◇ StringBuffer format(Object[] arguments, StringBuffer result, FieldPosition pos)
◇ StringBuffer format(Object arguments, StringBuffer result, FieldPosition pos)
◇ static String format(String pattern, Object... arguments)
※JDK1.5以前のバージョンでは、static String format(String pattern, Object []arguments)になります。
指定された文字列パターンをフォーマット要素に置き換えフォーマットします。
◇ Object[] parse(String source)
文字列を解析してパターンとマッチしたオブジェクトの配列を返します。
■フォーマット要素の定義
フォーマット要素は{}で囲まれます。
{ ArgumentIndex }
{ ArgumentIndex , FormatType }
{ ArgumentIndex , FormatType , FormatStyle }
◇ ArgumentIndex:0,1,2...などのインデックスを表す数字。置き換えデータの配列のインデックス
◇ FormatType:number(数字)、date(日付)、time(日時)、choice(ある範囲の数値)などの文字
◇ FormatStyle:
short
medium
long
full
integer
currency
percent
SubformatPattern(サブフォーマットパターン)
◇ 定義例:
{0}
{0,number,integer}
{1,number,#.##}
サンプル
TestMessageFormat.java
view plaincopy to clipboardprint?
import java.text.MessageFormat;
import java.text.ParseException;
import java.util.Calendar;
import java.util.Date;
public class TestMessageFormat {
/**
* MessageFormatのよくある使い方
*/
public static void main(String[] args) {
System.out.println("********* 1 ***********");
String message = MessageFormat.format("{0}を入力してください。", new Object[]{"ユーザID"});
System.out.println(message);
System.out.println("********* 2 ***********");
String pattern2 = "a={0,number,#.##} , b={1,number,integer} , c={2,date}";
Object []arguments = {
new Float(123.4567),
new Integer(345),
new Date()
};
String text2 = MessageFormat.format(pattern2, arguments);
System.out.println(pattern2);
System.out.println(text2);
System.out.println("********* 3 ***********");
String pattern3 = "a={0} , b={1,number,percent} , c={2,time}";
System.out.println(pattern3);
Object []arguments3 = {
"Hello MessageFormat!",
new Float(0.778),
Calendar.getInstance().getTime()
};
MessageFormat messageFormat = new MessageFormat(pattern3);
String text3 = messageFormat.format(arguments3);
System.out.println(text3);
System.out.println("********* 4 ***********");
String pattern4 = "a={0} , b={1} , c={2}";
String message4 = "a=100 , b=あいうえお , c=2009/03/05";
System.out.println(pattern4);
System.out.println(message4);
MessageFormat messageFormat4 = new MessageFormat(pattern4);
try {
Object []objs = messageFormat4.parse(message4);
System.out.println(objs[0]);
System.out.println(objs[1]);
System.out.println(objs[2]);
} catch (ParseException e) {
e.printStackTrace();
}
}
}
実行結果
********* 1 ***********
ユーザIDを入力してください。
********* 2 ***********
a={0,number,#.##} , b={1,number,integer} , c={2,date}
a=123.46 , b=345 , c=2009/03/05
********* 3 ***********
a={0} , b={1,number,percent} , c={2,time}
a=Hello MessageFormat! , b=78% , c=14:38:25
********* 4 ***********
a={0} , b={1} , c={2}
a=100 , b=あいうえお , c=2009/03/05
100
あいうえお
2009/03/05
0 件のコメント:
コメントを投稿