`

提供一个JAVA过滤HTML代码和截取字符串的类(包括测试用例)

 
阅读更多

package com.aodun.puhbs.blogging;

 

import java.util.regex.Pattern;

 

public class FunctionUtil {  

    public static void main(String[] args) {  

        String str = "<p><font size=\"2\"><span style=\" mce_style=\"font-size: 10.5pt\">"  

                + "依据绩abc效管理体系的规定,公司决定于</span><span style=\" mce_style=\"font-size: 10.5pt\">"  

                + "2008</span><span style=\" mce_style=\"font-size: 10.5pt\">年</span><span style=\" "  

                + "mce_style=\"font-size: 10.5pt\">12</span><span style=\" mce_style=\"font-size: 10.5pt\">"  

                + "月</span><span style=\" mce_style=\"font-size: 10.5pt\">22</span><span style=\" "  

                + "mce_style=\"font-size: 10.5pt\">日</span><span style=\" mce_style=\"font-size: 10.5pt\">"  

                + "\"-2009</span><span style=\" mce_style=\"font-size: 10.5pt\">年</span><span style=\" "  

                + "mce_style=\"font-size: 10.5pt\">1</span><span style=\" mce_style=\"font-size: 10.5pt\">"  

                + "月</span><span style=\" mce_style=\"font-size: 10.5pt\"> 23& </span><span style=\" "  

                + "mce_style=\"font-size: 10.5pt\">日期间进行</span><span style=\" mce_style=\"font-size: "  

                + "10.5pt\">2008</span><span style=\" mce_style=\"font-size: 10.5pt\">年年度绩效考评工作,"  

                + "具体事项如下:</span></font></p>";  

        String str_text = Html2Text(str);  

//        System.out.println(str_text);  

        String slice = abbreviate(str_text, 100, "...");  

        System.out.println(slice);  

    }  

 

    /** 

     * @param str : 

     *            source string 

     * @param width : 

     *            string's byte width 

     * @param ellipsis : 

     *            a string added to abbreviate string bottom 

     * @return String Object 

     *  

     */  

    public static String abbreviate(String str, int width, String ellipsis) {  

        if (str == null || "".equals(str)) {  

            return "";  

        }  

 

        int d = 0; // byte length  

        int n = 0; // char length  

        for (; n < str.length(); n++) {  

            d = (int) str.charAt(n) > 256 ? d + 2 : d + 1;  

            if (d > width) {  

                break;  

            }  

        }  

 

        if (d > width) {  

            n = n - ellipsis.length() / 2;  

            return str.substring(0, n > 0 ? n : 0) + ellipsis;  

        }  

 

        return str = str.substring(0, n);  

    }  

 

    /** 

     * @param str : 

     *            source string 

     * @param width : 

     *            string's byte width 

     * @param ellipsis : 

     *            a string added to abbreviate string bottom 

     * @return String Object 

     *  

     */  

    public static String Html2Text(String inputString) {  

        String htmlStr = inputString; // 含html标签的字符串  

        String textStr = "";  

        java.util.regex.Pattern p_script;  

        java.util.regex.Matcher m_script;  

        java.util.regex.Pattern p_style;  

        java.util.regex.Matcher m_style;  

        java.util.regex.Pattern p_html;  

        java.util.regex.Matcher m_html;  

 

        java.util.regex.Pattern p_html1;  

        java.util.regex.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;// 返回文本字符串  

    }  

}  


分享到:
评论

相关推荐

    Java设计模式分类及测试用例代码

    Java设计模式分类及测试用例代码

    测试用例内有三个测试用例相关文件

    1. **测试用例模板.doc**:这是一个Word文档,通常包含了测试用例的基本结构和要素。测试用例模板通常包括以下部分: - **ID**:唯一标识测试用例的编号,便于管理和追踪。 - **名称**:简洁描述测试用例目的的...

    java测试用例JUnit教程

    JUnit 的主要目标是提供一个简单、灵活的测试框架,帮助开发者编写可靠的测试用例。JUnit 的核心组件包括 TestRunner、TestCase 和 Assert。 JUnit 的优点 使用 JUnit 有很多优点,例如: * 简化测试用例的编写 *...

    按byte截取字符串

    它可能包含了一个名为`sliceByByte`的方法,接受一个字符串和要截取的字节数作为参数,然后按照上述步骤进行操作。 SliceByByteTest.java作为测试文件,可能会创建一些测试用例,包括各种长度和编码的字符串,来...

    Java测试用例工具

    在Java环境中,这样的工具通常包含创建、编辑、执行和管理测试用例的功能,以确保代码质量并减少bug的出现。 “LLT”可能是指轻量级低级测试,这是一种专注于底层功能和性能的测试方法,它关注于代码的内部结构和...

    测试用例设计:测试用例的基本概念 测试用例的设计和编写 测试用例评估 测试用例的管理

    总结来说,测试用例设计是一项涉及多方面知识的复杂任务,包括理解和定义基本概念,巧妙设计和编写测试用例,进行有效的评估,以及实施科学的管理策略。只有全面掌握这些要点,才能确保软件测试的全面性和准确性,...

    测试用例实例(含:功能测试用例、性能测试用例、兼容性测试用例)

    ### 测试用例实例知识点详解 #### 一、功能测试用例 **定义与目标:** 功能测试是一种软件测试类型,旨在验证软件的功能性需求是否按照预期的方式运作。功能测试通常涉及验证系统的输入、处理逻辑及输出是否符合...

    软件测试 白盒黑盒测试用例 源代码

    Junit是一个基于Java语言的单元测试框架,它可以用来测试Java程序的正确性。Junit框架提供了一些注解和断言机制,可以帮助开发者快速编写测试用例。 在本实验中,我们使用Junit框架来进行基于Java语言的单元测试。...

    Java测试很好 的 测试用例文档

    本篇主要围绕"Java测试很好的测试用例文档"展开,通过深入探讨测试用例设计、常用的Java测试工具以及测试策略,旨在证明Java应用程序的可测试性。 测试用例文档是测试过程中必不可少的部分,它详细记录了对软件功能...

    web系统测试用例

    本文档将详细介绍 Web 系统测试用例模板的组成部分、测试用例设计、测试用例执行和测试用例报告等内容。 测试用例模板组成部分 Web 系统测试用例模板通常由以下几个部分组成: 1. 简介: testers 负责人、测试...

    如何编写一个好的测试用例

    通过这种方式,每个测试用例都聚焦于验证一个具体的功能点,避免了在一个测试用例中包含多个测试点所带来的复杂性和混淆。 #### 四、便于统计 编写测试用例时还需要考虑到其在后期统计分析中的作用。良好的测试...

    基础代码测试用例用于自动测试相关代码

    基础代码测试用例用于自动测试相关代码 本资源提供了一个基础代码测试用例,用于自动测试相关代码...本资源提供了一个基础代码测试用例,涵盖了多项基础知识点,能够帮助开发者更好地理解和掌握Java语言的基础知识点。

    软件测试用例范文

    下面是一个测试用例示例,用于验证用户身份验证的功能: 用例名称:用户身份验证用例 用例编号:TC-TEP-Login-1 项目名称:技术出口合同网络申领系统(企业端) 编号/版本:V1.0.0.1 参考信息:需求说明第 ...

    棋牌游戏测试用例

    棋牌游戏类测试用例。可根据测试用例模板,进行多种测试类型的用例编写

    java通用测试用例

    ### Java通用测试用例详解 #### 一、功能测试 功能测试是软件测试的重要组成部分,主要目的是验证软件的各项功能是否符合需求规格说明。对于Java应用而言,功能测试尤为重要,因为它直接关系到用户能否正常使用该...

    测试用例实例模板 测试用例实例模板

    描述应当包括测试用例的目的、测试范围、测试环境、测试步骤等要素,以便读者能够快速地理解测试用例的内容和目的。 三、标签 测试用例实例模板的标签是指对测试用例的分类和标记,通常使用关键词或短语来标记测试...

    学生信息管理系统测试用例

    * 文档介绍可以提供测试用例的基础信息,帮助测试人员理解测试用例的目的和范围。 * 文档介绍可以提供参考文献和术语与缩写解释,帮助测试人员更好地理解测试用例。 功能测试用例的重要性 功能测试用例是测试用例...

    文本框测试用例整理版2022

    文本框测试用例是WEB测试中一个重要的部分,为广大的朋友提供了一些思路。文本框测试用例可以分为三部分:普通文本框、数值型文本框和日期型文本框。 一、普通文本框: 普通文本框的测试用例包括: * 输入中英文...

    华为——测试用例模板

    华为测试用例模板旨在提供一个标准化、结构化的测试过程,以提高测试效率和准确性。 华为测试用例模板通常包含以下几个核心部分: 1. **测试用例ID**:每个测试用例都有一个唯一的标识符,便于管理和追踪。 2. **...

Global site tag (gtag.js) - Google Analytics