Jsoup从网页提取字符串保留换行给客户端

这又是个看似简单却要折腾很久达不到完美效果的需求。

1.直接得到字符串,但丢失了换行

document.text()

 

2.解析p 解析h1 解析div  万一别人用的不是这3标签 或者彼此嵌套 都会存在问题,或者过几天改版了

或者干脆

 

document.select("*")

去重复过程去嵌套过程更麻烦甚至不可为,有的文本内容本来就是重复的,那么有没有保留换行的提取文本

3.保留换行的提取文本

Jsoup.clean(jsArticleDetail.toString(), "", Whitelist.none(), new Document.OutputSettings().prettyPrint(false));

这个保留了换行但是网页网上的具体几个空格仍然不理想,那么只有把多余的空行换成\n了,虽然可能会替换原本确实存在的空格,但是是目前最接近需求的结果了

 
String baseContent = Jsoup.clean(jsArticleDetail.toString(), "", Whitelist.none(), new Document.OutputSettings().prettyPrint(false));
 
String newText = baseContent.replaceAll("\\s+", "\n");

//去掉收尾多余的空格
 
String trueContent = newText.replaceFirst("\n", "").trim();

4.优化

我们可以再优化一下,当大于2个空格的时候我们再进行替换成\n,那文章中非要有2个多空格也没有更好的方法。 你也可以根据实际情况把2改为 其他数字 根据你解析的网页进行调整

String baseContent = Jsoup.clean(jsArticleDetail.toString(), "", Whitelist.none(), new Document.OutputSettings().prettyPrint(false));
String newText = baseContent.replaceAll("\\s{2,}", "\n");
String trueContent = newText.replaceFirst("\n", "").trim();

特别感谢正则提供LX HAH

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值