gpt4 book ai didi

java - 清理 HTML 字符串

转载 作者:行者123 更新时间:2023-12-01 12:04:48 26 4
gpt4 key购买 nike

我有一个 HTML 刺痛,例如:

<p dir="ltr"><b><i><u><b><i><u><b><i><u><b><i><u><b><i><u><b><i><u><b><i><u><b><i><u><b><i><u><b><i><u><b><i><u><b><i><u><b><i><u><b><i><u><b><i><u><b><i><u><b><i><u>bold</u></i></b></u></i></b></u></i></b></u></i></b></u></i></b></u></i></b></u></i></b></u></i></b></u></i></b></u></i></b></u></i></b></u></i></b></u></i></b></u></i></b></u></i></b></u></i></b></u></i><i><u><b><i><u><b><i><u><b><i><u><b><i><u><b><i><u><b><i><u><b><i><u><b><i><u><b><i><u><b><i><u><b><i><u><b><i><u> </u></i></b></u></i></b></u></i></b></u></i></b></u></i></b></u></i></b></u></i></b></u></i></b></u></i></b></u></i></b></u></i></b></u></i></b></u></i><i><u><b><i><u><b><i><u><b><i><u><b><i><u><b><i><u><b><i><u><b><i><u><b><i><u><b><i><u><b><i><u><b><i><u>all</u></i></b></u></i></b></u></i></b></u></i></b></u></i></b></u></i></b></u></i></b></u></i></b></u></i></b></u></i></b></u></i></b></u></i><i><u><b><i><u><b><i><u><b><i><u><b><i><u><b><i><u><b><i><u><b><i><u><b><i><u> </u></i></b></u></i></b></u></i></b></u></i></b></u></i></b></u></i></b></u></i></b></u></i></b></u></i><i><u><b><i><u><b><i><u><b><i><u><b><i><u><b><i><u><b><i><u><b><i><u>in</u></i></b></u></i></b></u></i></b></u></i></b></u></i></b></u></i></b></u></i></b></u></i><i><u><b><i><u><b><i><u><b><i><u><b><i><u><b><i><u> </u></i></b></u></i></b></u></i></b></u></i></b></u></i></b></u></i><i><u><b><i><u><b><i><u><b><i><u><b><i><u>one</u></i></b></u></i></b></u></i></b></u></i></b></u></i></b></p>

我想清理 html,如 <b><i><u> bold all in one </b></i></u>

我尝试过这个方法:webText = webText.replaceAll("(</?(?:b|i|u)>)\\1+", "$1").replaceAll("</(b|i|u)><\\1>", "");

但是没有用。 html 仍然很笨拙。我应该做什么来修复同样的情况?还有其他正则表达式或 JSON 方式吗?

最佳答案

But it is of no use. The html remains clumsy. What should I do to mend the same? Is there any other Regex or JSON way?

正则表达式可能在这里有所帮助,但一般来说,如果事情变得复杂,它们就不能很好地作为 Html 解析器。 Jsoup 是一个很棒的 Html 库,我真的可以推荐它。

不幸的是,您的 html 仍然是有效的 html,因此解决方案很棘手。

最好从 Jsoup documentation 开始,尤其是 Selector syntax 之一.

从这里开始:

final String html = ... // your html from above

// Parse the html string into a document
Document doc = Jsoup.parse(html, "", Parser.xmlParser());

/*
* Select all elements, which ...
*
* (a) have a text (= at least not empty)
* (b) has no childs it's own
*
* Iterate over those found and print them.
*/
for( Element element : doc.select("*:matches(^..+?$):not(:has(*))") )
{
System.out.println(element);
}

结果:

<u>bold</u>
<u>all</u>
<u>in</u>
<u>one</u>

如果您确实需要 <b><i><u> bold all in one </b></i></u> :

final String html = ... // your html from above

// As above
Document doc = Jsoup.parse(html, "", Parser.xmlParser());

// All text of the document
String text = doc.text();

// Create an element and it's childs
Element element = new Element(Tag.valueOf("b"), "");
element.appendElement("i").appendElement("u").text(text);

System.out.println(element);

结果:

<b><i><u>bold all in one</u></i></b>

关于java - 清理 HTML 字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27699742/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com