当前位置: 首页 > 面试题库 >

使用jsoup将html转换为纯文本时,如何保留换行符?

关志勇
2023-03-14
问题内容

我有以下代码:

 public class NewClass {
     public String noTags(String str){
         return Jsoup.parse(str).text();
     }


     public static void main(String args[]) {
         String strings="<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.0 Transitional//EN \">" +
         "<HTML> <HEAD> <TITLE></TITLE> <style>body{ font-size: 12px;font-family: verdana, arial, helvetica, sans-serif;}</style> </HEAD> <BODY><p><b>hello world</b></p><p><br><b>yo</b> <a href=\"http://google.com\">googlez</a></p></BODY> </HTML> ";

         NewClass text = new NewClass();
         System.out.println((text.noTags(strings)));
}

结果是:

hello world yo googlez

但我想打破界限:

hello world
yo googlez

我已经看过jsoup的TextNode#getWholeText(),但是我不知道如何使用它。

如果<br>我解析的标记中有一个,如何在结果输出中换行?


问题答案:

保留换行符的真正解决方案应该是这样的:

public static String br2nl(String html) {
    if(html==null)
        return html;
    Document document = Jsoup.parse(html);
    document.outputSettings(new Document.OutputSettings().prettyPrint(false));//makes html() preserve linebreaks and spacing
    document.select("br").append("\\n");
    document.select("p").prepend("\\n\\n");
    String s = document.html().replaceAll("\\\\n", "\n");
    return Jsoup.clean(s, "", Whitelist.none(), new Document.OutputSettings().prettyPrint(false));
}

满足以下要求:

  1. 如果原始html包含换行符(\ n),则保留它
  2. 如果原始html包含br或p标签,它们将被翻译为换行符(\ n)。


 类似资料:
  • 问题内容: 我在表格中存储了HTML片段。 不是整个页面,没有标签等,只是基本格式。 我希望能够在给定页面上将Html仅显示为文本,而 无需设置格式 (实际上只是前30-50个字符,但这很容易)。 如何将Html中的“文本”作为纯文本放入字符串中? 所以这段代码。 成为: 你好,世界。有没有人在那里? 问题答案: 如果您在谈论标签剥离,那么无需担心标签之类的事情就相对简单了。如果您需要做的就是显示

  • 我想改变HTML元素的文本内容,使其具有一定的背景色。HTML的格式如下 我有像下面这样需要匹配的关键字: 我有字符串形式的html 我想匹配元素文本内容,并在匹配HTML字符串时用关键字替换它们。我会改变他们的跨度有给定的背景颜色和匹配关键字的文本。 生成的HTML如下所示。 如何用java实现它。我正在使用jsoup库。 这个代码对我有用。这是最佳方法吗?。或者有没有更好的替代html字符串的

  • 问题内容: 我正在开发一个简单的RSS Reader应用程序,作为Xcode中的初学者项目。目前,我已设置它解析提要,并放置标题,发布日期,描述和内容,并将其显示在WebView中。 我最近决定在用于选择帖子的TableView中显示说明(或内容的删节版本)。但是,这样做时: 它显示了帖子的原始HTML。 我想知道如何仅将TableView的详细UILabel转换为纯文本的HTML。 谢谢! 问题

  • 问题内容: 我有Java程序,它将从服务器接收纯文本。纯文本可能包含URL。Java库中是否有任何Class可以将纯文本转换为HTML文本?还是其他图书馆?如果没有,那该怎么办呢? 问题答案: 我找到了使用模式匹配的解决方案。这是我的代码- 这是输入和输出- 输入文字是可变的: 输出:

  • 问题内容: 我一直在使用JSoup解析歌词,到目前为止一直很棒,但是遇到了问题。 我可以用来返回所需节点的完整HTML,这样就保留了换行符: 但是,如您所见,保留HTML实体和标签具有不幸的副作用。 但是,如果使用,我可以获得更好的外观,并且没有标签和实体: 这有另一个不幸的副作用,即删除了换行符并压缩为单行。 在调用之前简单地从节点进行替换会产生相同的结果,而且该方法似乎将文本压缩到方法本身的一

  • 问题内容: 我有以下内容: 我正在寻找一个Javascript函数来转换文本,以便每个特殊字母都由其HTML实体序列表示,如下所示: 该函数不仅应转义该示例的字母,而且还应转义所有这些字母。 您将如何实现?是否有任何现有功能?(很简单,因为首选没有框架的解决方案)顺便说一句:是的,我已经看到了这个问题,但是并不能满足我的需求。 问题答案: 借助bucabay的帮助和创建我自己的功能的建议,我创建了