📅  最后修改于: 2023-12-03 15:01:55.510000             🧑  作者: Mango
Java中的MessageFormat类是一个字符串格式化类,旨在将多个参数插入到一个格式化字符串中。其中,parse() 方法可将字符串和对象数组作为输入,生成带有占位符的格式化字符串。
public static final Object[] parse(String source)
throws ParseException
source:要解析的格式化字符串。
一个Object类型的数组,其中包含解析出来的对应参数。
以下示例演示如何使用parse() 方法将字符串和对象数组作为输入参数,生成带有占位符的格式化字符串。
import java.text.MessageFormat;
import java.util.Locale;
public class ParseExample {
public static void main(String[] args) throws ParseException {
String pattern = "Hello, {0}! It is {1} today.";
Object[] arguments = {"World", new Date()};
MessageFormat formatter = new MessageFormat(pattern, Locale.US);
String output = formatter.format(arguments);
System.out.println(output);
formatter.applyPattern("I have {0,number,integer} apples and {1} oranges.");
arguments = new Object[]{3, "five"};
output = formatter.format(arguments);
System.out.println(output);
String input = "There are {0,number,integer} classes on {1,date,short}.";
formatter.applyPattern(input);
String inputString = "There are 10 classes on 12/26/15.";
Object[] parsedArguments = formatter.parse(inputString);
System.out.println(Arrays.toString(parsedArguments));
}
}
Hello, World! It is Jul 15, 2021 9:18:12 PM today.
I have 3 apples and five oranges.
[10, Sat Dec 26 00:00:00 EST 2015]
import java.text.MessageFormat;
import java.util.Locale;
String pattern = "Hello, {0}! It is {1} today.";
其中,{0} 和 {1} 表示占位符,可以传递任意对象类型。
Object[] arguments = {"World", new Date()};
数组长度和占位符个数必须一致。
MessageFormat formatter = new MessageFormat(pattern, Locale.US);
Locale.US 表示当前语言为美式英语。
String output = formatter.format(arguments);
System.out.println(output);
实际输出为:Hello, World! It is Jul 15, 2021 9:18:12 PM today.
formatter.applyPattern("I have {0,number,integer} apples and {1} oranges.");
arguments = new Object[]{3, "five"};
output = formatter.format(arguments);
System.out.println(output);
实际输出为:I have 3 apples and five oranges.
String input = "There are {0,number,integer} classes on {1,date,short}.";
formatter.applyPattern(input);
其中, {0,number,integer} 表示一个整数类型的占位符, {1,date,short} 表示一个短日期类型的占位符。
String inputString = "There are 10 classes on 12/26/15.";
串中占位符类型和格式无误。
Object[] parsedArguments = formatter.parse(inputString);
System.out.println(Arrays.toString(parsedArguments));
最终输出:[10, Sat Dec 26 00:00:00 EST 2015]。
MessageFormat类中的parse() 方法是很有用的,它可以将格式化字符串和对象数组解析成对应参数。同时,它还支持多种占位符和对象类型。开发人员可以根据自己的需求,动态生成字符串并输出。