为了能到远方,脚下的每一步都不能少.|

玩单机的零度

园龄:2年2个月粉丝:1关注:8

📂工作
🔖java
2022-12-09 15:42阅读: 391评论: 0推荐: 0

🚀 java处理富文本内容

需求:富文本框内容在列表或者简述进行去标签展示

import com.alibaba.fastjson.JSON;
import com.leesky.ezframework.execl.util.StringUtils;

import javax.swing.text.html.HTMLEditorKit;
import javax.swing.text.html.parser.ParserDelegator;
import java.io.*;
import java.util.HashMap;
import java.util.Map;

/**
 * 处理富文本
 */
public class Html2Text extends HTMLEditorKit.ParserCallback {

    private static class InnerClass{
        private static final Html2Text html2Text = new Html2Text();
    }

    public static Html2Text getInstance(){
       return InnerClass.html2Text;
    }

    StringBuffer stringBuffer;

    public Html2Text() {}

    public void parse(String str) throws IOException {

        InputStream iin = new ByteArrayInputStream(str.getBytes());
        Reader in = new InputStreamReader(iin);
        stringBuffer = new StringBuffer();
        ParserDelegator delegator = new ParserDelegator();
        // the third parameter is TRUE to ignore charset directive
        delegator.parse(in, this, Boolean.TRUE);
        iin.close();
        in.close();
    }

    public void handleText(char[] text, int pos) {
        stringBuffer.append(text);
    }

    public String getText() {
        return stringBuffer.toString();
    }

    /**
     * 去除标签
     * @param str
     * @return
     */
    public static String getContent(String str) {
        if (StringUtils.isEmpty(str)) return "";
        try {
            InnerClass.html2Text.parse(str);
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        return InnerClass.html2Text.getText();
    }

    /**
     * 截取字符串,判断长度保留
     * @param str 富文本
     * @param len 长度
     * @return
     */
    public static String getPartialContent(String str, int len) {
        if (StringUtils.isEmpty(str)) return "";
        // 去标签化
        str = getContent(str);
        // 判断长度若小于则赋值本身长度
        if (str.length() < len)
            len = str.length();
        return str.substring(0, len);
    }

    public static void main(String[] args) {
        String str = "<title>java将富文本字符串(HTML)转为文本(Text)。</title>";
        System.out.println(getContent(str));
	System.out.println(getPartialContent(str, 100));
        
    }
}

 

本文作者:玩单机的零度

本文链接:https://www.cnblogs.com/cxyfyf/p/16969117.html

版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。

posted @   玩单机的零度  阅读(391)  评论(0编辑  收藏  举报
点击右上角即可分享
微信分享提示
评论
收藏
关注
推荐
深色
回顶
收起