首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >无法使用MessageFormat解析文本

无法使用MessageFormat解析文本
EN

Stack Overflow用户
提问于 2021-01-29 14:16:29
回答 2查看 113关注 0票数 0

我正在尝试使用MessageFormat类来解析消息。但是我得到"MessageFormat解析错误!“。这段代码是我从网上弄来的。这是link

代码语言:javascript
复制
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, number, #.#}, {1, number, #.##}"); 
        ; 

        // 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); 
    } 

}
}

我在控制台中得到了以下输出。

代码语言:javascript
复制
10.456, 20.325, 30.444

String is Null
Exception thrown : java.text.ParseException: MessageFormat parse error!

为什么会出现此错误?如何解决此错误?谢谢。

EN

回答 2

Stack Overflow用户

发布于 2021-01-29 14:44:31

我将构造函数中的参数更改为

代码语言:javascript
复制
MessageFormat mf = new MessageFormat("{0,number,#,###.##}, {2,number,#,###.##}, {1,number,#,###.##}");

Consolo输出如下所示:

代码语言:javascript
复制
10.456, 20.325, 30.444
Parsed value are :
10.456
30.444
20.325
票数 1
EN

Stack Overflow用户

发布于 2021-01-29 14:36:50

在遇到解析问题时,像往常一样,尝试执行相反的操作,以查看何时需要解析输入。这是一个适用于XML、JSON、Dates和MessageFormat的通用指南。

代码语言:javascript
复制
MessageFormat mf 
    = new MessageFormat("{0, number, #}, {2, number, #.#}, {1, number, #.##}"); 
; 

System.out.println(mf.format(new Integer[] { 10456, 30444, 20325 }));

输出

代码语言:javascript
复制
 10456,  20325,  30444

如您所见,输出包含前导空格。如果我们更改为:

代码语言:javascript
复制
String str = " 10.456,  20.325,  30.444"; 

然后一切都能正常工作。

输出

代码语言:javascript
复制
 10.456,  20.325,  30.444
Parsed value are :
10.456
30.444
20.325
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65949684

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档