StringEscapeUtils.escapeHtml(String) тоже экранирует символ $?

Я хочу экранировать символ $ вместе с другими символами, такими как "<", ">" и т. Д. Так что я просто хотел узнать, поддерживает ли StringEscapeUtils это. И если нет, как я могу избежать этого?

2 ответа

Похоже нет. Вы можете попробовать это с этим кодом:

StringEscapeUtils.escapeHtml("<b>Hello, World!</b>$")

Выходы

&lt;b&gt;Hello, World!&lt;/b&gt;$

Я протестировал, выполняя следующее из commons-text 1.1 после того, как commons-lang 3 устарел StringEscapeUtils:

public static void main(String[] args)
{
    System.out.println(StringEscapeUtils.escapeHtml4("$ % > < = #"));
}

Выход $ % &gt; &lt; = #

Он не экранирует "$" из коробки, но новые Utils в commons-text позволяют пользователям расширять его. Прочитайте эту статью для примеров. Вот маленький, но статья показывает более продвинутые возможности:

Map<CharSequence, CharSequence> added = new HashMap<>();
added.put("$", "foo");
System.out.println(StringEscapeUtils.ESCAPE_HTML4
                                    .with(new LookupTranslator(added))
                                    .translate("$ % > < = #"));

Выход foo % &gt; &lt; = #

Другие вопросы по тегам