业务场景:
类似在系统发布任务时,页面使用如下图的组件时,新增的内容就是待html标签的文本,大概内容如下,如果在公告列表只需要展示这个内容的一部分,在详情中展示带html的内容,就会展示出待html标签,对于客户不太好理解,所以需要去掉html展示。
<p class="ql-align-center"><strong>中秋放假</strong></p><p>一年一度春节将至,为了便于公司同仁提前安排好工作和出行行程,先根据2024国家法定节假日和公司福利政策,将“春节”期间放假安排通知如下:</p><p>一、放假时间</p><p> 2月8日—2月9日,公司员工福利带薪休假日</p><p> 2月10日-2月17日,法定春节假日</p><p> 共计10天;</p><p>另外注意:2月4日(星期日)、2月18日(星期日)上班</p><p>二、注意事项</p><p>1.请各位同仁合理安排出行时间,提前购票。</p><p>2.在离开公司前,请务必关闭办公室窗户、电源,以确保公司财产安全。</p><p>3.请各部门提前安排好工作,确保2月8日-2月17日放假期间工作无缝对接。有任务未决项目,请项目负责人提前与客户沟通好假期期间的安排,确保客户需求得到满足。同时,请在假期期间保持手机畅通,以便及时处理紧急事宜。</p><p>4.如遇紧急情况,及时与相关部门负责人联系。</p><p>三、祝福</p><p>在此,衷心祝愿大家度过一个愉快的假期!新年快乐,阖家幸福!</p><p>特此通知。</p><p class="ql-align-right">人力资源部</p><p class="ql-align-right">2024年10月18日</p>
功能实现
引入依赖
<!--html标签提取中文字符-->
<dependency>
<groupId>org.jsoup</groupId>
<artifactId>jsoup</artifactId>
<version>1.13.1</version>
</dependency>
提取工具
package com.joolun.cloud.common.core.util;
import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.jsoup.nodes.Element;
import org.jsoup.select.Elements;
import java.util.ArrayList;
import java.util.List;
/**
* @ClassName : HtmlGetChineseUtils
* @Description : html标签获取中文
* @Author : DreamXu
* @Date: 2024-08-29 09:07
*/
public class HtmlGetChineseUtils {
/**
* 提取html中的中文字符
*
* @param html
* @return
*/
public static String getAllText(String html) {
Document doc = Jsoup.parse(html);
String text = doc.text();
System.out.println("提取的中文字符: " + text);
return text;
}
/**
* 提取html中特定标签内的文本数组
*/
public static List<String> getTextListByTag(String html, String tag) {
Document doc = Jsoup.parse(html);
Elements elements = doc.select("p");
List<String> list = new ArrayList<>();
for (Element element : elements) {
list.add(element.text());
}
return list;
}
/**
* 提取html中特定标签内的文本字符串
*/
public static String getTextStrByTag(String html, String tag) {
Document doc = Jsoup.parse(html);
return doc.select(tag).text();
}
/**
* 示例
*/
public static void test() {
String html = "<html><head><title>示例页面</title></head>"
+ "<body><p>这是一个<strong>HTML</strong>页面的示例文本。</p></body></html>";
String allText = getAllText(html);
List<String> pArr = getTextListByTag(html, "p");
String pStr = getTextStrByTag(html, "p");
System.out.println("提取的中文字符: " + allText);
System.out.println("p标签内的文本数组: " + pArr);
System.out.println("p标签内的文本字符串: " + pStr);
}
}