JavaWeb同步学习笔记之一百零一、JavaWeb_国际化之MessageFormat

JavaWeb_国际化之MessageFormat

    • 国际化之MessageFormat

国际化之MessageFormat

  • 1.MessageFormat 类
     1)MessageFormat 类提供了一种参数替换模式字符串中的占位符的方式,它将根据模式字符串中包含的占位符产生一系列的格式化对象,然会调用这些格式化对象对参数进行格式化,并用格式化后的结果字符串替换模式字符串中的相应占位符。
  • 2.模式字符串与占位符
     1)模式字符串:
      ① On {0}, {1} destroyed {2} houses and caused {3} of damage。
     2)对模式字符串进行格式化操作时,需要采用数组的方式提供模式字符串中的每个占位符所对应的参数。
     3)占位符有以下三种方式:
      ①{argumentIndex}:0-9 之间的数字,表示要格式化对象数据在参数数组中的索引号。
      ②{argumentIndex,formatType}:参数的格式化类型。
      ③{argumentIndex,formatType,FormatStyle}:与指定的格式化类型对应的模式,它的值必须是与相应的格式化类型匹配的合法模式或表示合法模式的字符串。
  • 3.MessageFormat 格式化模式字符串
     1)MessageFormat 类可以格式化模式字符串,它根据其中的占位符产生一系列的格式化对象,然后调用这些格式化对象对参数进行格式化,并用格式化后的结果字符串替换模式字符串中的相应占位符。
     2)格式化模式字符串的步骤:
      ①创建 MessageFormat 对象:须指定格式化的模式字符串,也可以指定 Locale 对象来按某个国家地区的习惯进行格式化。
      ②调用 MessageFormat 对象的 format 方法执行格式化操作:须为format 方法传递一个数组类型的参数,数组中的每个元素分别用于代替模式字符串中的与其索引号相对应的占位符。
  • 4.单元测试类
    I18nTest.java
/**  
 * All rights Reserved,Designed By XS
 * @Title: I18nTest.java
 * @Package com.xs.i18n
 * @Description: TODO
 * @author: XS
 * @date: 2019年3月23日 下午8:02:52
 * @version V1.0
 */
package com.xs.i18n;

import java.text.DateFormat;
import java.text.MessageFormat;
import java.text.NumberFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Locale;

import org.junit.jupiter.api.Test;

/**   
 * @ClassName: I18nTest
 * @Description: TODO
 * @author: XS
 * @date: 2019年3月23日 下午8:02:52
 * @version V1.0
 */
class I18nTest {
	
	/**
	 * MessageFormat: 可以格式化模式字符串
	 * 模式字符串: 带占位符的字符串: "Date: {0}, Salary: {1}"
	 * 可以通过 format 方法会模式字符串进行格式化
	 */
	@Test
	void testMessageFormat() {

		String str = "Date: {0}, Salary: {1}";
		
		Locale locale = Locale.CHINA;
		Date date = new Date();
		double sal = 12345.12;
		
		DateFormat dateFormat = DateFormat.getDateInstance(DateFormat.MEDIUM, locale);
		String dateStr = dateFormat.format(date);
		
		NumberFormat numberFormat = NumberFormat.getCurrencyInstance(locale);
		String salStr = numberFormat.format(sal);
		
		String result = MessageFormat.format(str, dateStr, salStr);
		System.out.println(result);
		
	}

}

你可能感兴趣的:(JavaWeb)