การจัด Format Message

เป็นรูปแบบการ Format ข้อความโดยใส่ Parameter ไปให้กับตำแหน่งที่เราต้องการ เช่น ผมมีข้อความ ที่เก็บดังนี้

The job name {0} was started on {1}.

หรือ

Deleted data {0} successfully.

ยอมรับเลยครับว่าผมเคยใช้ รูปแบบ ในการแทนที่ตำแหน่งที่ต้องการประมาณนี้ (ไปอยู่ที่ไหนมาไม่รู้ถึงได้เขียนแบบนี้)

String patter = "The job name {0} was started on {1}.";
patter = patter.replaceFirst("\\{0}", "Test Job Name");
patter = patter.replaceFirst("\\{1}", new Date().toString());

พอดีวันนี้ รื้อ Code เดิมๆมาแก้ไข และหาวิธีก็เลยเจอการ Format Message ในรูปแบบที่กล่าวมาโดยใช้รูปแบบดังนี้ครับ

/**
 * File Name : FormatMessage.java
 * Created Date : Dec 23, 2009 : 4:50:36 PM
 * Copyright © 2009 www.fun4station.com
 */
package com.fun4station.example;

import java.text.MessageFormat;
import java.util.Date;
import java.util.Locale;

/**
 * @Author Supot Saelao
 * @Version 1.0
 */
public class FormatMessage {
	public static void main(String[] args) {
		String pattern = "The job name {0} was started on {1}.";
		String msg = "";
		Date toDate = new Date();

		// Format using locale
		MessageFormat formatter = new MessageFormat(pattern);
		Object[] arguments = { "Test Job Name", toDate };
		formatter.setLocale(new Locale("th", "TH"));
		msg = formatter.format(arguments);
		System.out.println("Locale message : " + msg);

		// Format standard
		Object[] params = new Object[] { "Test Job Name", toDate };
		msg = MessageFormat.format(pattern, params);
		System.out.println("Standard message : " + msg);
	}
}

ผลที่ได้ก็ประมาณนี้ครับ

Locale message : The job name Test Job Name was started on 23/12/2552, 17:06 น..
Standard message : The job name Test Job Name was started on 12/23/09 5:06 PM.

จากตัวอย่างเป็นวิธีการที่ง่ายที่สุดแล้วครับ นอกจากนี้ยังมีรูปแบบ Format อีกมากครับ
อ้างอิง
Class MessageFormat

  1. No comments yet.