MessageFormat.format的使用

MessageFormat.format是根据顺序和占位符来对应插入的,以生成适用于不同语言环境的消息;

MessageFormat模式(主要部分)

FormatElement

{ArgumentIndex}:是从0开始的入参位置索引

{Argument Index,FormatType}

{ArgumentIndex,FormatType,FormatStype}

FormatType:指定使用不同的Format子类对入参进行格式化处理。值范围如下:

number:调用DateFormat进行格式化

time:调用DateFormat进行格式化

choice:调用ChoiceFormat进行格式化

FormatStyle:设置FormatType中使用的格式化样式。值范围如下:

short、medium、long、full、integer、currency、percent、SubformatPattern(子格式模式,形如#.##)还以str为例,在这个字符串中:

1. {0}和{1,number,short}和{2,short,#.#};都属于FormatElement,0,1,2是ArgumentIndex。

2. {1,number,short}里面的number属于FormatType,short属于FormatStyle;

3.{1,number,#.#}里面的#.#就属于子格式模式。

指定FormatType和FormatStyle是为了生成日期格式的值、不同精度的数字、百分比类型等等。

实例:

1、ArgumentIndex必须是非负整数,它的个数不只限于0到9这10个,它可以用0到9的数字组成,因此可以有好多个,如:

public static void main(String[] args){
    String a = "111";
    String b = "222";
    String c = "333";
    String msg =MessageFormat.format("{0},{1},{2}",a,b,c);
    sout.(msg);
}//所以以上的打印结果为:111,222,333;

2、格式化字符串时,两个单引号才表示一个单引号,单个单引号会被省略,除非中文单引号不会被省略,如:

String msg= MessageFormat.format(" {0} is a pig", "ZhouLan"); 
System.out.println(msg);  // 输出: ZhouLan is a pig

给字母a加上单引号,如:

String msg= MessageFormat.format("oh, {0} is a pig", "ZhouLan");    
System.out.println(msg);  // 输出:oh, ZhouLanis a pig

如果需要显示双引号要进行转移,比如:String msg = "oh, {0} is "a" pig";

3、单引号会使其后面的占位符均失效,导致直接输出占位符。

MessageFormat.format("{0}{1}", 1, 2); // 结果12
MessageFormat.format("{0}{1}", 1, 2); // 结果{0}{1}
MessageFormat.format("{0}-{1}", 1, 2); // 结果{0}-2

使用键盘选中文字:

Shift +↑ 向上选定一行

Shift +↓ 向下选定一行

Shift + ← 向左选定1个字符

Shift + → 向右选定1个字符

Shift + Ctrl +↑ 选定内容扩展至段落首

Shift + Crtl +↓ 选定内容扩展至段落尾

Shift + Crtl + ← 选定内容扩展至单词首

Shift + Crtl + → 选定内容扩展至单词尾

Shift + Home 选定内容扩展至行首

Shift + End 选定内容扩展至行尾

Shift + Ctrl + Home 选定内容扩展文档首

Shift + Crtl + End 选定内容扩展至文档尾

Crtl + A 选定整个文档

经验分享 程序员 微信小程序 职场和发展