MessageFormat(动态文本)

MessageFormat(动态问文本)

一.如果一个字符串中包含了多个与国际化相关的数据,可以使用MessageFormat类对这些数据进行批量处理。

例如:At 12:30 pm on jul 3,1998, a hurricance destroyed 99 houses and caused $1000000 of damage

•   以上字符串中包含了时间、数字、货币等多个与国际化相关的数据,对于这种字符串,可以使用MessageFormat类对其国际化相关的数据进行批量处理。

MessageFormat 类如何进行批量处理呢?

•   MessageFormat类允许开发人员用占位符替换掉字符串中的敏感数据(即国际化相关的数据)。

•   MessageFormat类在格式化输出包含占位符的文本时,messageFormat类可以接收一个参数数组,以替换文本中的每一个占位符。

二.    模式字符串:

•   On {0}, a hurricance destroyed {1} houses and caused {2} of damage.

MessageFormat类

•   MessageFormat(String pattern)

l  实例化MessageFormat对象,并装载相应的模式字符串。

•   format(object obj[])

l  格式化输出模式字符串,参数数组中指定占位符相应的替换对象。

l  format(new Object[ ]{date, new Integer(99), new Double(1E7) })

例题讲解:package com.hbsi.test;

import java.text.MessageFormat;

import java.util.Date;

import java.util.Locale;

import java.util.ResourceBundle;

public class Demo3 {

/**

* @param args

*/

public static void main(String[] args) {

// TODO Auto-generated method stub

//模式字符串

String pattern="At{0,time,full} on{0,date,long}, a hurricance destroyed {1,number} houses and caused {2,number,currency} of damage.";

MessageFormat mf=new MessageFormat(pattern,Locale.US);

//准备参数数组

Object [] objs={new Date(),new Integer(99),new Double(1e7)};

//执行格式化

String result=mf.format(objs);

System.out.println(result);

//加入到资源文件中

ResourceBundle bundle=ResourceBundle.getBundle("com.hbsi.resource.MyResource",Locale.ENGLISH);

result=bundle.getString("title");

//System.out.println(result);

MessageFormat mf1=new MessageFormat(result,Locale.ENGLISH);

System.out.println(mf.format(objs));

}

}

三.模式字符串与占位符

l  占位符有三种方式书写方式:

•   {argumentIndex}: 0-9 之间的数字,表示要格式化对象数据在参数数组中的索引号

•   {argumentIndex,formatType}: 参数的格式化类型

•   {argumentIndex,formatType,FormatStyle}: 格式化的样式,它的值必须是与格式化类型相匹配的合法模式、或表示合法模式的字符串。

代码分析:

String pattern = "At {0, time, short} on {0, date}, a destroyed‘\n‘"

+ "{1} houses and caused {2, number, currency} of damage.";

MessageFormat msgFmt = new MessageFormat(pattern,Locale.US);

String datetimeString = "Jul 3, 1998 12:30 PM";

Date date = DateFormat.getDateTimeInstance(DateFormat.MEDIUM,

DateFormat.SHORT,Locale.US).parse(datetimeString);

String event = "a hurricance";

Object []msgArgs = {date, event, new Integer(99), new Double(1E7)};

String result = msgFmt.format(msgArgs);

System.out.println(result);

时间: 2024-10-06 04:44:05

MessageFormat(动态文本)的相关文章

Java常用类库——国际化程序(Locale,ResourceBundle以及MessageFormat处理动态文本)

本章目标 掌握国际化程序的基本实现原理. 掌握资源文件的作用. 掌握Locale类的基本实现原理. 掌握ResourceBundle类的作用. 可以使用MessageFormat处理动态文本. 了解资源类的使用. 国际化程序 国际化的操作就是指一个程序可以同时适应多门语言,即:如果现在程序的使用者是中国人,则会以中文为显示文字,如果现在程序的使用者是英国人,则会以英语为显示文字,也就是说可以通过国际化操作,让一个程序适应各个国家的语言要求. 那么对于各个国家来说,每一个程序的代码是不会有任何改变

复制 动态文本按钮

javascript: 1 function fzan(btn,texts) { 2 $(btn).zclip({ 3 path: "js/ZeroClipboard.swf", 4 copy: $(texts).text(), 5 afterCopy:function(){/* 复制成功后的操作 */ 6 var $copysuc = $("<div class='copy-tips'><div class='copy-tips-wrap'>? 复制

掌握iOS8中的动态文本

原文链接 : Swift Programming 101: Mastering Dynamic Type in iOS 8 原文作者 : Kevin McNeish 译文出自 : 开发技术前线 www.devtf.cn 转载声明: 本译文已授权开发者头条享有独家转载权,未经允许,不得转载! 译者 : kmyhy Apple声称鼓励第三方App能够支持动态文本.但是,如果你尝试在App中实现这个特性,你会发现其中有很多坑(例如静态cell和定制cell样式).在本文中,我们将介绍动态文本的机理以及

as3.0 动态文本属性大全

var my_fmt = new TextFormat();//常用样式 my_fmt.align = "center"; my_fmt.blockIndent = 50; //区块缩进 my_fmt.bold = true; my_fmt.bullet = true; my_fmt.color = 0xff0000; my_fmt.font = "黑体"; my_fmt.indent = 50; //首字缩进 my_fmt.italic = true; my_fm

ios计算动态文本尺寸

ios7.0以前,使用sizeWithFont:constrainedToSize:lineBreakMode:来计算文本所占的高度或宽度: 如下例: <span style="font-size:12px;">CGSize textSize = [callText sizeWithFont:[UIFont systemFontOfSize:12.0] constrainedToSize:CGSizeMake(200, CGFLOAT_MAX)lineBreakMode:N

(JavaEE-13)国际化开发.md

> JavaWeb-国际化 国际化开发概述 软件的国际化:软件开发时,要使它能同时应对世界不同地区和国家的访问,并针对不同地区和国家的访问,提供相应的.符合来访者阅读习惯的页面或数据 国际化又称为 i18n:internationalization 合格的国际化软件 软件实现国际化,需具备哪些特征: 对于程序中固定使用的文本元素,例如菜单栏.导航条等中使用的文本元素.或错误提示信息,状态信息等,需要根据来访者的地区和国家,选择不同语言的文本为之服务 对于程序动态产生的数据,例如(日期,货币等),

第70课 文本绘制技巧

1. QPainter拥有绘制文本的能力 (1)drawText(拥有多个重载形式) (2)常见调用方式 ①p.drawText(10,10, "Santa Claus");  //在坐标(10,10)处绘制文本 ②p.drawText(0,0,100,30, Qt::AlignCenter, "Santa Claus"); //在矩形范围内并以居中对齐的方式绘制文本. 2. 绘制参数 (1)字体(QFont).颜色(QColor):控制文本大小.风格.颜色等 (2

JavaWeb开发——软件国际化(动态元素国际化)

软件国际化的第二个部分,就是动态元素国际化. 数值,货币,时间,日期等数据由于可能在程序运行时动态产生,所以无法像文字一样简单地将它们从应用程序中分离出来,而是需要特殊处理.Java 中提供了解决这些问题的 API 类(位于 java.util 包和 java.text 包中). Locale 类 Locale 实例对象代表一个特定的地理,政治.文化区域. 一个 Locale 对象本身不会验证它代表的语言和国家地区信息是否正确,只是向本地敏感的类提供国家地区信息,与国际化相关的格式化和解析任务由

JavaWeb开发——软件国际化(文本元素国际化)

前几天围绕着JDBC编程进行了系统的学习.现在我们对Java程序数据库操作已经是轻车熟路了.也学会了使用各种框架来帮助我们简化编程. 今天是学习计划的第七天,虽然学习热情没有前几天高涨了.但是,写博客总结的习惯应该要坚持下去.废话不多说了. 今天的学习内容是JavaWeb开发--软件国际化. 软件的国际化:软件开发时,要使它能同时应对世界不同地区和国家的访问,并针对不同地区和国家的访问,提供相应的.符合来访者阅读习惯的页面或数据. 国际化又称为 i18n:internationalization