Ответ 1
Как насчет org.apache.commons.lang.StringEscapeUtils unescapeHtml(). Библиотека доступна на сайте Apache.
(РЕДАКТИРОВАТЬ: июнь 2019 г. - см. Комментарии ниже для получения обновлений о библиотеке)
Я использую Html.fromHtml(STRING).toString() для преобразования строки, которая может содержать или не содержать html и/или html-объекты в ней, в текстовую строку.
Это довольно медленно, я думаю, что мой последний расчет состоял в том, что он занял около 22 мс на avg. С большой партией они могут добавить более минуты. Поэтому я ищу более быстрый, построенный по производительности вариант.
Есть ли способ ускорить это или есть другие варианты декодирования?
Изменить:. Поскольку не существует встроенного метода, который быстрее или построен специально для производительности, я вознагражу награду всем, кто может указать мне в сторону библиотеки что:
Html.fromHtml(String).toString();
В качестве примечания, я уже пробовал Jsoup с помощью этого метода: Jsoup.parse(String).text()
и он был медленнее.
Как насчет org.apache.commons.lang.StringEscapeUtils unescapeHtml(). Библиотека доступна на сайте Apache.
(РЕДАКТИРОВАТЬ: июнь 2019 г. - см. Комментарии ниже для получения обновлений о библиотеке)
fromHtml()
не имеет высокопроизводительного анализатора HTML, и я не знаю, насколько быстро реализована реализация toString()
на SpannedString
. Я сомневаюсь, что он был разработан для вашего сценария.
В идеале строки чисты, прежде чем они попадут на маломощный телефон. Либо очистите их в процессе сборки (для ресурсов/активов), либо очистите их на сервере (перед их загрузкой).
Если по какой-либо причине вам абсолютно необходимо очистить их на устройстве, вы, возможно, можете использовать NDK для создания библиотеки C/С++, которая быстрее очищает вас.
Это невероятно быстрый и простой вариант: Unbescape
Это значительно улучшило нашу производительность синтаксического анализа, которая требует, чтобы каждая строка была запущена через декодер.
Вы просмотрели Стриптиз HTML из текстового JavaScript
С большой партией они могут добавить через минуту
Любой синтаксический анализ займет некоторое время. Мне кажется, что 22 мс быстро. В любом случае, можете ли вы сделать это в фоновом режиме? Может помочь вам какое-то кэширование?
Хотя я еще не пробовал их, я нашел несколько возможных решений:
Надеюсь, это поможет.