#java #android #replace
#java #Android #заменить
Вопрос:
input.replace("amp;amp;", "amp;").replace("amp;<", "<").replace("amp;>", ">").replace("amp;quot;", """);
я использую эту строку кода в качестве конвертера sudo htmlspecialchars. в моем приложении это не должно быть слишком сложным.
по какой-то причине приведенный выше код не заменяет(«amp;», «amp;»), похоже, это ничего не делает.
любой совет?
input = input.replaceAll("[^\x20-\x7e]", "");
я тоже пробовал это.
Комментарии:
1. Пробовал URLDecoder.decode(СТРОКА ДЛЯ ДЕКОДИРОВАНИЯ); ?
2.
amp;amp;<
? Упс. Вы действительно хотите, чтобы такого рода вещи были совершенно правильными.
Ответ №1:
В Android есть один класс Html внутри android.text.Html, который вы можете использовать следующим образом:
Html.fromHtml(any_html_text);
Но эта функция вернет составной объект, поэтому используйте
Spanned spn=Html.fromHtml(any_html_text);
Вы можете установить этот составной текст на любую кнопку или текст textview, Надеюсь, это поможет вам.
Смотрите эту ссылку также для справки.
Ответ №2:
Вместо того, чтобы делать это вручную, проверьте класс Html. Вызов Html.fromHtml()
должен сделать свое дело.
Ответ №3:
Пытаясь избежать / отменить html путем замены строк самостоятельно, вы можете создать проблемы безопасности в своем приложении (в зависимости от того, что оно делает с выводом). Либо используйте Html.fromHtml, либо из Apache libs org.apache.commons.lang.StringEscapeUtils.unescapeHtml
Комментарии:
1. Я бы настоятельно рекомендовал использовать библиотеку apache commons. Я делал это в прошлом, и это гораздо более полное и беспроблемное решение
Ответ №4:
Это работает —
public String cleanString(String dirty) {
return Html.fromHtml(dirty).toString();
}