zoukankan      html  css  js  c++  java
  • Android Html处理器通用类 HtmlUtil

    1.整体分析

    1.1.首先看一下源代码,可以直接Copy。

    public class HtmlUtil {
    
        /**
         * 获取 html 中的纯文本
         */
        public static String Html2Text(String inputString) {
            String htmlStr = inputString; // 含html标签的字符串
            String textStr = "";
            Pattern p_script;
            Matcher m_script;
            Pattern p_style;
            Matcher m_style;
            Pattern p_html;
            Matcher m_html;
            Pattern p_html1;
            Matcher m_html1;
    
            try {
                String regEx_script = "<[//s]*?script[^>]*?>[//s//S]*?<[//s]*?///[//s]*?script[//s]*?>"; // 定义script的正则表达式{或<script[^>]*?>[//s//S]*?<///script>
                String regEx_style = "<[//s]*?style[^>]*?>[//s//S]*?<[//s]*?///[//s]*?style[//s]*?>"; // 定义style的正则表达式{或<style[^>]*?>[//s//S]*?<///style>
                String regEx_html = "<[^>]+>"; // 定义HTML标签的正则表达式
                String regEx_html1 = "<[^>]+";
                p_script = Pattern.compile(regEx_script, Pattern.CASE_INSENSITIVE);
                m_script = p_script.matcher(htmlStr);
                htmlStr = m_script.replaceAll(""); // 过滤script标签
    
                p_style = Pattern.compile(regEx_style, Pattern.CASE_INSENSITIVE);
                m_style = p_style.matcher(htmlStr);
                htmlStr = m_style.replaceAll(""); // 过滤style标签
    
                p_html = Pattern.compile(regEx_html, Pattern.CASE_INSENSITIVE);
                m_html = p_html.matcher(htmlStr);
                htmlStr = m_html.replaceAll(""); // 过滤html标签
    
                p_html1 = Pattern.compile(regEx_html1, Pattern.CASE_INSENSITIVE);
                m_html1 = p_html1.matcher(htmlStr);
                htmlStr = m_html1.replaceAll(""); // 过滤html标签
    
                textStr = htmlStr;
    
            } catch (Exception e) {
                System.err.println("Html2Text: " + e.getMessage());
            }
    
            return textStr;// 返回文本字符串
        }
    
        /**
         * 移除段落标签
         */
        public static String removeP(String html) {
            String result = html;
            if (result.contains("<p>") && result.contains("</p>")) {
                result = result.replace("<p>", "");
                result = result.replace("</p>", "<br>");
                while (result.endsWith("<br>")) {
                    result = result.substring(0, result.length() - 4);
                }
            }
            return result;
        }
    }
    View Code

    1.2.这里面总共定义了两个静态方法。

    • 获取html中的纯文本
    • 移除段落标签

      除此之外,其他方法,可以看情况添加进去。


    2.局部分析

    2.1.如何获取html中的纯文本

      

      

      这里传进去一个html的字符串,然后通过一些过滤操作,返回一个纯文本。

      其实有多种方法都可以实现提取html纯文本==>Java实现从Html文本中提取纯文本

      关于正则表达式匹配Html标签==>正则表达式

      

      

      

     2.2.移除段落标签

      

      先将<p>==>""

      将</p>==>"<br>"

      最后判断末尾是否有<br>标签,如果有则清除。


    3.案例

    3.1.测试转换html

      有如下html代码:

    <html>
    <head>
    <meta charset="utf-8"> 
    <title>菜鸟教程(runoob.com)</title> 
    <style>
    body {color:red;}
    h1 {color:#00ff00;}
    p.ex {color:rgb(0,0,255);}
    </style>
    </head>
    
    <body>
    <h1>这是标题 1</h1>
    <p>这是一个普通的段落。请注意,本文是红色的。页面中定义默认的文本颜色选择器。</p>
    <p class="ex">这是一个类为"ex"的段落。这个文本是蓝色的。</p>
    </body>
    </html>
    View Code

      页面效果:

      

      然后转换过后的数据为:

      

    3.2.测试移除段落标签

      测试几段文字

      <p>第一段</p>

      <p>第二段</p>

      <p>第三段</p>

      <p>第四段</p>

      <p>第五段</p>

      执行结果:

      



    既然选择了,便不顾风雨兼程。Just follow yourself.
  • 相关阅读:
    mTracker ----- MPDP
    读取UIM卡中的短信
    Your version is: java version "1.6.0_24". The correct version is: Java SE 1.6.
    [Java2 入门经典]第14章 集合框架
    [Java2 入门经典]第13章 泛型类
    [Java2 入门经典]第6章 类的扩展与继承
    彩信下载
    指标权重确定方法之熵权法
    用户价值分析
    数据归一化处理
  • 原文地址:https://www.cnblogs.com/Jason-Jan/p/7909970.html
Copyright © 2011-2022 走看看