gpt4 book ai didi

java - 将中断和段落中断转换为java中的新行

转载 作者:搜寻专家 更新时间:2023-10-31 08:14:20 24 4
gpt4 key购买 nike

基本上我有一个带有 <br> 的 HTML 片段和 <p></p>里面。我能够删除所有 HTML 标签,但这样做会使文本格式错误。

我想要类似 nl2br() 的东西在 PHP 中除了反转输入和输出并且还考虑了 <p>标签。在 Java 中有它的库吗?

最佳答案

您基本上需要更换每个 <br>\n每个 <p>\n\n .因此,在您成功删除它们的地方,您需要插入 \n\n\n分别。

这是在 Jsoup 的帮助下启动的示例HTML 解析器(HTML 示例是有意以这种方式编写的,因此即使不是几乎不可能,也很难为此使用正则表达式)。

public static void main(String[] args) throws Exception {
String originalHtml = "<p>p1l1<br/><!--</p>-->p1l2<br><!--<p>--></br><p id=p>p2l1<br class=b>p2l2</p>";
String text = br2nl(originalHtml);
String newHtml = nl2br(text);

System.out.println("-------------");
System.out.println(text);
System.out.println("-------------");
System.out.println(newHtml);
}

public static String br2nl(String html) {
Document document = Jsoup.parse(html);
document.select("br").append("\\n");
document.select("p").prepend("\\n\\n");
return document.text().replace("\\n", "\n");
}

public static String nl2br(String text) {
return text.replace("\n\n", "<p>").replace("\n", "<br>");
}

(注意:replaceAll() 是不必要的,因为我们只想在这里进行简单的字符序列替换,而不是正则表达式字符序列替换)

输出:

<p>p1l1<br/><!--</p>-->p1l2<br><!--<p>--></br><p id=p>p2l1<br class=b>p2l2</p>
-------------


p1l1
p1l2



p2l1
p2l2
-------------
<p>p1l1 <br>p1l2 <br> <br> <p>p2l1 <br>p2l2

有点hacky,但它有效。

关于java - 将中断和段落中断转换为java中的新行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3132257/

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