如何解决无法使用 MessageFormat 解析文本
我正在尝试使用 MessageFormat 类来解析消息。但我收到“MessageFormat 解析错误!”。我从互联网上得到了这个代码。这是link:
package myy.test;
import java.text.MessageFormat;
import java.text.ParseException;
public class TestParse {
public static void main(String[] args) {
// TODO Auto-generated method stub
try {
// creating and initializing MessageFormat
MessageFormat mf
= new MessageFormat("{0,number,#},{2,#.#},{1,#.##}");
;
// creating and initializing String source
String str = "10.456,20.325,30.444";
System.out.println(str);
// parsing the string
// accoridng to MessageFormat
// using parse() method
Object[] hash = mf.parse(str);
// display the result
System.out.println("Parsed value are :");
for (int i = 0; i < hash.length; i++)
System.out.println(hash[i]);
}
catch (ParseException e) {
System.out.println("\nString is Null");
System.out.println("Exception thrown : " + e);
}
}
}
我在控制台中得到以下输出。
10.456,30.444
String is Null
Exception thrown : java.text.ParseException: MessageFormat parse error!
为什么会出现此错误以及如何解决?谢谢。
解决方法
我把构造函数中的参数改成了这个
MessageFormat mf = new MessageFormat("{0,number,#,###.##},{2,{1,###.##}");
Consolo 输出是这样的:
10.456,20.325,30.444
Parsed value are :
10.456
30.444
20.325
,
与以往一样,遇到解析问题时,请尝试执行相反的操作以查看解析期望的输入时间。这是适用于 XML、JSON、日期和 MessageFormat
的一般准则。
MessageFormat mf
= new MessageFormat("{0,#},#.#},#.##}");
;
System.out.println(mf.format(new Integer[] { 10456,30444,20325 }));
输出
10456,20325,30444
如您所见,输出有前导空格。如果我们改为:
String str = " 10.456,30.444";
然后一切正常。
输出
10.456,30.444
Parsed value are :
10.456
30.444
20.325
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。