0

アプリケーションの一部として、DB からデータを抽出して文字列として返すカスタム メソッドを作成しました。私の文字列にはポンド記号のような特殊文字が含まれており、抽出すると次のようになります。

「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 に戻すことができます。

これが XML ではなく HTML である場合は、2 つのエンティティ セットに違いがあるため、他の方法を使用します。

于 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]

16 進エンティティ参照を受け入れないことに注意してください。

于 2013-03-25T13:54:38.517 に答える