Удаление HTML-тегов в Java - PullRequest
40 голосов
/ 07 мая 2009

Существует ли существующая библиотека Java, которая предоставляет метод для удаления всех тегов HTML из строки? Я ищу что-то эквивалентное функции strip_tags в PHP.

Я знаю, что могу использовать регулярное выражение, как описано в этом вопросе Stackoverflow , однако мне было любопытно, может ли уже существовать метод stripTags(), плавающий где-то в библиотеке Apache Commons, который можно использовать .

Ответы [ 13 ]

1 голос
/ 23 января 2017

Из-за аббревиатуры (усечения строки) фрагмента html у меня также возникла проблема с незамкнутыми тегами html, которые регулярные выражения не могут обнаружить. Например:

Lorem ipsum dolor sit amet, <b>consectetur</b> adipiscing elit. <a href="abc"

Итак, ссылаясь на 2 лучших ответа (JSoup и regex), я предпочел решение с использованием JSoup:

Jsoup.parse(html).text()
0 голосов
/ 31 января 2016
public static String stripTags(String str) {
    int startPosition = str.indexOf('<');
    int endPosition;
    while (startPosition != -1) {
        endPosition = str.indexOf('>', startPosition);
        str = str.substring(0, startPosition) + (endPosition != -1 ? str.substring(endPosition + 1) : "");
        startPosition = str.indexOf('<');
    }
    return str;
}
0 голосов
/ 17 сентября 2009

Wicket использует следующий метод для выхода из html, расположенный в: org.apache.wicket.util.string.Strings

public static CharSequence escapeMarkup(final String s, final boolean escapeSpaces,
    final boolean convertToHtmlUnicodeEscapes)
{
    if (s == null)
    {
        return null;
    }
    else
    {
        int len = s.length();
        final AppendingStringBuffer buffer = new AppendingStringBuffer((int)(len * 1.1));

        for (int i = 0; i < len; i++)
        {
            final char c = s.charAt(i);

            switch (c)
            {
                case '\t' :
                    if (escapeSpaces)
                    {
                        // Assumption is four space tabs (sorry, but that's
                        // just how it is!)
                        buffer.append("&nbsp;&nbsp;&nbsp;&nbsp;");
                    }
                    else
                    {
                        buffer.append(c);
                    }
                    break;

                case ' ' :
                    if (escapeSpaces)
                    {
                        buffer.append("&nbsp;");
                    }
                    else
                    {
                        buffer.append(c);
                    }
                    break;

                case '<' :
                    buffer.append("&lt;");
                    break;

                case '>' :
                    buffer.append("&gt;");
                    break;

                case '&' :

                    buffer.append("&amp;");
                    break;

                case '"' :
                    buffer.append("&quot;");
                    break;

                case '\'' :
                    buffer.append("&#039;");
                    break;

                default :

                    if (convertToHtmlUnicodeEscapes)
                    {
                        int ci = 0xffff & c;
                        if (ci < 160)
                        {
                            // nothing special only 7 Bit
                            buffer.append(c);
                        }
                        else
                        {
                            // Not 7 Bit use the unicode system
                            buffer.append("&#");
                            buffer.append(new Integer(ci).toString());
                            buffer.append(';');
                        }
                    }
                    else
                    {
                        buffer.append(c);
                    }

                    break;
            }
        }

        return buffer;
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...