Android之去掉文字內容的HTML標籤

lvxiangan發表於2018-09-30

啥也不說了,直接上程式碼吧!

/**
 * 移除文字中的HTML標籤
 */
public class HtmlUtil {
    private static final String regEx_script = "<script[^>]*?>[\\s\\S]*?<\\/script>"; // 定義script的正規表示式
    private static final String regEx_style = "<style[^>]*?>[\\s\\S]*?<\\/style>"; // 定義style的正規表示式
    private static final String regEx_html = "<[^>]+>"; // 定義HTML標籤的正規表示式
    private static final String regEx_space = "\\s*|\t|\r|\n";//定義空格回車換行符


    public static void test() {
        String str = "&lt;p&gt;     &lt;/p&gt;&lt;p style=&quot;white-space: normal;&quot;&gt;      廖姓,是炎黃子孫的重要宗族,得姓已逾4000多年。&lt;/p&gt;&lt;p style=&quot;white-space: normal;&quot;&gt;     自從盤古來天地,三皇五帝代如今,中華名族綿延繁衍,為人類創造了燦爛的文化。炎帝和皇帝,是中華兒女的共同祖先。炎帝,即傳說中的神農氏,生於渭河流域的姜水,故姓姜;皇帝即傳說中的軒轅氏,發祥於涇河流域的姬水,故姓姬。炎帝和皇帝;是中國最早的有姓者。爾後不斷派衍,至今已達2500餘個姓(一說8000餘個姓)。&lt;/p&gt;&lt;p style=&quot;white-space: normal;&quot;&gt;姓的得來,除氏族圖騰,始祖母的某種遭遇或夢幻,始祖母的生育地點等外,今天繁雜分壇的&ldquo;百家姓&rdquo;,有的以祖先封國為姓,有的以祖先的字、號、名為姓,有的以封邑、食邑和居住地命名,有的以官職、爵位命名,有的以黃帝賜姓、貶姓,還有的因避諱產生的姓,以技為姓,以天干地支為姓,林林總總,不一而足。&lt;/p&gt;&lt;p style=&quot;white-space: normal;&quot;&gt;      廖姓最早發源於河南省境內。廖姓歷史上最大的郡望&ldquo;汝南郡&rdquo;早期即出此地,當時河南廖姓之昌榮,自不必言。秦漢之際,廖姓始有遷往周邊地區者。伯廖一支形成巨大鹿望郡。另有汝南廖姓後裔廖惠避秦之亂而遷河南(據《廖氏源流序》)。魏晉南北朝時期,繼&ldquo;永嘉之亂&rdquo;始,北方廖姓大6舉南遷,此期,廖惠後裔廖化自襄陽(金湖北省襄樊)遷入四川,是為入蜀始祖。傳自廖延齡,任武威(今屬甘肅省)太守。另有晉代隱士廖堂,將樂(今屬福建省)人,為最早入閩者。唐時,入閩者甚眾。唐初有廖姓隨陳元光父子開漳入閩,唐末有廖姓隨王潮、王審知入閩。廖惠一支傳至廖崇德,壬江西虔化令,其後人又有遷居福建汀州寧化石壁寨,進而遷上杭等地者。宋代,廖姓已是福建大姓,名士輩出。元代以前廖惠一支遷徙情況,《興廖氏族譜》所述較為明晰:&ldquo;其先祖世居汝南,魏晉南北朝時,因北方之亂,播遷於江南各地。唐時其祖由江西雩都,避唐末之亂,遷於福建汀州寧化石壁寨。後子孫因亂,又遷順昌,廖氏居於閩者益眾。至宋末,再由寧化經長汀、上杭、永定,而入廣東--大埔、梅縣、興寧、五華等地區。&rdquo;明代,山西大槐樹廖姓分遷於河南、河北、江蘇、北京等地。清代,閩粵廖姓有入臺進而移居泰國、新加坡等地者。今日廖姓以江西、湖南、四川、廣西、廣東等省居多,上述五省廖姓約佔全國漢族廖姓人口的百分之七十三。廖姓是當地今中國姓氏排行第六十六位的大姓,人口較多,約佔全國漢族人口的百分之零點三四。&lt;/p&gt;&lt;p&gt;&lt;br/&gt;&lt;/p&gt;&lt;p&gt;     &lt;/p&gt;&lt;p style=&quot;white-space: normal;&quot;&gt;  ";
        System.out.println("HTML DECODE結果----->" + htmlDecode(str));
    }



    /**
     * @param htmlStr
     * @return 刪除Html標籤
     */
    public static String delHTMLTag(String htmlStr) {
        Pattern p_script = Pattern.compile(regEx_script, Pattern.CASE_INSENSITIVE);
        Matcher m_script = p_script.matcher(htmlStr);
        htmlStr = m_script.replaceAll(""); // 過濾script標籤

        Pattern p_style = Pattern.compile(regEx_style, Pattern.CASE_INSENSITIVE);
        Matcher m_style = p_style.matcher(htmlStr);
        htmlStr = m_style.replaceAll(""); // 過濾style標籤

        Pattern p_html = Pattern.compile(regEx_html, Pattern.CASE_INSENSITIVE);
        Matcher m_html = p_html.matcher(htmlStr);
        htmlStr = m_html.replaceAll(""); // 過濾html標籤

        Pattern p_space = Pattern.compile(regEx_space, Pattern.CASE_INSENSITIVE);
        Matcher m_space = p_space.matcher(htmlStr);
        htmlStr = m_space.replaceAll(""); // 過濾空格回車標籤
        return htmlStr.trim(); // 返回文字字串
    }

    public static String getTextFromHtml(String htmlStr) {
        htmlStr = delHTMLTag(htmlStr);
        htmlStr = htmlStr.replaceAll(" ", "");
        return htmlStr;
    }



    /**
     * html 編碼
     * @param source
     * @return
     */
    public static String htmlEncode(String source) {
        if (source == null) {
            return "";
        }
        String html = "";
        StringBuffer buffer = new StringBuffer();
        for (int i = 0; i < source.length(); i++) {
            char c = source.charAt(i);
            switch (c) {
                case '<':
                    buffer.append("&lt;");
                    break;
                case '>':
                    buffer.append("&gt;");
                    break;
                case '&':
                    buffer.append("&amp;");
                    break;
                case '"':
                    buffer.append("&quot;");
                    break;
                case ' ':
                    buffer.append("&nbsp;");
                    break;

                default:
                    buffer.append(c);
            }
        }
        html = buffer.toString();
        return html;
    }


    /**
     * html 解碼
     * @param source
     * @return
     */
    public static String htmlDecode(String source) {
        if (TextUtils.isEmpty(source)) {
            return "";
        }
        source = source.replace("&lt;", "<");
        source = source.replace("&gt;", ">");
        source = source.replace("&amp;", "&");
        source = source.replace("&quot;", "\"");
        source = source.replace("&nbsp;", " ");
        source = source.replace("&ldquo;", "\"");
        source = source.replace("&rdquo;", "\"");

        return getTextFromHtml(source);
    }
}

 

 

相關文章