0

作为我的应用程序的一部分,我编写了一个自定义方法来从数据库中提取数据并将其作为字符串返回。我的字符串有特殊字符,如井号,提取时如下所示:

“MyMobile Blue £54.99 [12 个月期限]”

我想要 £ 替换为实际的英镑符号。下面是我的方法:

public String getOfferName(String offerId) {
    log(Level.DEBUG, "Entered getSupOfferName");
    OfferClient client = (OfferClient) ApplicationContext
            .get(OfferClient.class);
    OfferObject offerElement = getOfferElement(client, offerId);
    if (offerElement == null) {
        return "";
    } else {

        return offerElement.getDisplayValue();
    }
}

有人可以帮忙吗?

4

2 回答 2

2

该文档包含XML/HTML 实体

您可以使用commons-langStringEscapeUtils.unescapeXml()中的方法将它们解析回它们的 unicode 等价物。

如果这是 HTML 而不是 XML,请使用其他方法,因为这两组实体存在差异。

于 2013-03-25T12:34:04.463 回答
0

我投票支持 StringEscapeUtils.unescapeXml() 解决方案。无论如何,这是一个自定义解决方案

    String s = "MyMobile Blue £54.99 [12 month term]";
    Pattern p = Pattern.compile("&#(\\d+?);");
    Matcher m = p.matcher(s);
    StringBuffer sb = new StringBuffer();
    while(m.find()) {
        int c = Integer.parseInt(m.group(1));
        m.appendReplacement(sb, "" + (char)c);
    }
    m.appendTail(sb);
    System.out.println(sb);

输出

MyMobile Blue £54.99 [12 month term]

请注意,它不接受十六进制实体引用

于 2013-03-25T13:54:38.517 回答