Подтвердить что ты не робот

Замените HTML-коды эквивалентными символами в Java

В настоящее время я работаю над преобразованием кодов HTML с эквивалентными символами в java. Мне нужно преобразовать приведенный ниже код в символы.

è - è
®   - ®
& - &
ñ - ñ
&   - &

Я попытался использовать шаблон регулярного выражения

(&#x)([\\d|\\w]*)([\\d|\\w]*)([\\d|\\w]*)([\\d|\\w]*)(;)

Когда я отлаживаю, matcher.find() дает мне true, но элемент управления пропускает цикл, где я написал код для преобразования. Не знаю, что там происходит.

Кроме того, есть ли способ оптимизировать это регулярное выражение?

Любая помощь приветствуется.

Исключение

java.lang.NumberFormatException: For input string: "x26"
      at java.lang.NumberFormatException.forInputString(Unknown Source)
      at java.lang.Integer.parseInt(Unknown Source)
      at java.lang.Integer.parseInt(Unknown Source)
      at org.apache.commons.lang.Entities.unescape(Entities.java:683)
      at org.apache.commons.lang.StringEscapeUtils.unescapeHtml(StringEscapeUtils.java:483)
4b9b3361

Ответ 1

Кроме того, есть ли способ оптимизировать это регулярное выражение?

Да, не использовать regex для этой задачи, используйте Apache StringEscapeUtils из Apache commons lang:

import org.apache.commons.lang.StringEscapeUtils;
...
String withCharacters = StringEscapeUtils.unescapeHtml(yourString);

JavaDoc говорит:

Unescapes строка, содержащая escape-последовательности объекта, в строку, содержащую фактические символы Юникода, соответствующие экранам. опоры Объекты HTML 4.0.

Например, строка "&lt;Fran&ccedil;ais&gt;" станет "<Français>"

Если объект непризнан, он остается один и вставляется в строку результата в стенограмме. например "&gt;&zzzz;x" станет ">&zzzz;x".

Ответ 2

Одной из других возможностей или существующих методов использования может быть spring -web org.springframework.web.util.HtmlUtils.htmlUnescape.

Пример использования в автономном Groovy script:

@Grapes(
    @Grab(group='org.springframework', module='spring-web', version='4.3.0.RELEASE')
)
import org.springframework.web.util.HtmlUtils

println HtmlUtils.htmlUnescape("La &#xE9;lite del tenis no teme al zika y jugar&#xE1; en R&#xED;o")