今天面对一个场景,数据库中一个字段中存的数据是html片段,需要将html片段中的不包括标签的汉字及标点符号提出来作为摘要展示出来,经过一段时间折腾写下了这个方法,该方法还是比较实用的,特此记录下来。
public static String accessToChinese(String htmlParagraph){
Document doc = Jsoup.parse(htmlParagraph);
//将输入的HTML解析为一个新的文档
String htmlText=doc.text();
String finalText="";
//正则匹配中文及中文标点符号
String regEx="[\u4E00-\u9FA5|\\!|\\,|\\。|\\(|\\)|\\ 《|\\》|\\“|\\”|\\?|\\:|\\;|\\【|\\】]";
Pattern p = Pattern.compile(regEx);
Matcher m = p.matcher(htmlText);
while (m.find()) {
finalText+=m.group();
}
return finalText; //返回Html中的正文以及标点符号
}
值得讨论的是不知你们是否遇到这个问题得到的正文字符串中的\n\t这些转义字符实用replaceAll(“\r|\n*”,”“);或者使用如下都是去不掉的这种情况
Pattern p = Pattern.compile("\\s*|\t|\r|\n");
Matcher m = p.matcher(dd); //dd为需要过滤的字符串
String outStr = m.replaceAll("");
因为我暂时解决不了这个问题,所以我采用了获取中文字符以及中文标点的方式取巧的解决了过滤其他转义字符!
你们有什么好的方式呢?