Удалить все теги HTML, кроме <br>из текста? - PullRequest
0 голосов
/ 14 февраля 2011

привет всем У меня есть строка Java, которую я хочу 1- удалите из него все HTML-теги, кроме тегов новой строки <br> и </br>, и сохраните текст внутри тегов, если текст есть. 2 - после анализа текстовый результат соединяется друг с другом, как: text1 и text2, между текстами нет пробела, я тоже хочу это сделать.

вот что я делаю:

String html = "<div dir=\"ltr\">hello my friend<span>ECHO</span><br>how are you ?<br><br><div class=\"gmail_quote\">On Mon, Feb 14, 2011 at 10:45 AM, My Friend <span dir=\"ltr\">&lt;<a href=\"mailto:notifications@mydomain.com\">notifications@mydomain.com</a>&gt;</span> wrote:<br> "
            + "<blockquote class=\"gmail_quote\" style=\"margin: 0pt 0pt 0pt 0.8ex; border-left: 1px solid rgb(204, 204, 204); padding-left: 1ex;\"> ";
    String parsedText = html.replaceAll("\\<.*?\\>", "");
    System.out.println(parsedText);

токовый выход:

hello my friendECHOhow are you ?On Mon, Feb 14, 2011 at 10:45 AM, My Friend &lt;notifications@mydomain.com&gt; wrote:

желаемый вывод:

hello my friend ECHO <br> how are you ? <br> <br> On Mon, Feb 14, 2011 at 10:45 AM, My Friend &`lt;notifications@mydomain.com&gt; wrote:`

Ответы [ 3 ]

4 голосов
/ 14 февраля 2011

Вы можете сделать это так:

final String html =
    "<div dir=\"ltr\">hello my friend<span>ECHO</span><br>how are you ?" +
    "<br><br><div class=\"gmail_quote\">On Mon, Feb 14, 2011 at 10:45 AM," +
    " My Friend <span dir=\"ltr\">&lt;<a href=\"mailto:notifications@mydo" +
    "main.com\">notifications@mydomain.com</a>&gt;</span> wrote:<br><bloc" +
    "kquote class=\"gmail_quote\" style=\"margin: 0pt 0pt 0pt 0.8ex; bord" +
    "er-left: 1px solid rgb(204, 204, 204); padding-left: 1ex;\"> ";
final Pattern tagPattern = Pattern.compile("<([^\\s>/]+).*?>");
final Matcher matcher = tagPattern.matcher(html);
final StringBuffer sb = new StringBuffer(html.length());
while(matcher.find()){
    matcher
        .appendReplacement(sb, matcher.group(1).equalsIgnoreCase("br")
            ? matcher.group()
            : " ");
}
matcher.appendTail(sb);

final String parsedText = sb.toString();
System.out.println(parsedText);

Вывод:

hello my friendECHO<br>how are you ?<br><br>On Mon, Feb 14, 2011 at 10:45 AM,
My Friend &lt;notifications@mydomain.com&gt; wrote:<br>  

Но я надеюсь, вы знаете, что Ктулху звонит, если выделать .Не разбирайте HTML / XML с помощью Regex !!

2 голосов
/ 14 февраля 2011

Я бы

  • заменить все
    новой строкой или другим специальным символом.
  • удалить все теги.
  • заменить специальный символ на
0 голосов
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...