package com.lxw.videoworld.utils;

import org.apache.http.util.TextUtils;

import java.util.regex.Pattern;

/**
 * Created by Zion on 2017/5/20.
 */
public class StringUtil {

    // 处理 HTML 提取的文本内容，去掉首位空白，替换 HTML 特殊字符
    public static String disposeField(String oldStr){
        if(!TextUtils.isEmpty(oldStr)){
            String temp1 = HTMLUtil.trimHtml2Txt(oldStr, null);
            String temp2 = removeHtmlTag(temp1);
            String temp3 = replaceAll12288(temp2);
            String temp4 = removeExtraCharacters(temp3);
            return temp4;
        }else {
            return "";
        }
    }

    // 替换 12288 全角空格
    public static String replaceAll12288(String fullStr){
        if(TextUtils.isEmpty(fullStr)){
            return fullStr;
        }
        char[] c = fullStr.toCharArray();
        for (int i = 0; i < c.length; i++) {
           if (c[i] == 12288) { // 空格
                c[i] = (char) 32;
            }
        }
        return new String(c);
    }


    /**
     * 删除Html标签
     * @param inputString
     * @return
     */
    public static String removeHtmlTag(String inputString) {
        if (inputString == null)
            return null;
        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_special;
        java.util.regex.Matcher m_special;
        try {
//定义script的正则表达式{或<script[^>]*?>[\\s\\S]*?<\\/script>
            String regEx_script = "<[\\s]*?script[^>]*?>[\\s\\S]*?<[\\s]*?\\/[\\s]*?script[\\s]*?>";
//定义style的正则表达式{或<style[^>]*?>[\\s\\S]*?<\\/style>
            String regEx_style = "<[\\s]*?style[^>]*?>[\\s\\S]*?<[\\s]*?\\/[\\s]*?style[\\s]*?>";
// 定义HTML标签的正则表达式
            String regEx_html = "<[^>]+>";
// 定义一些特殊字符的正则表达式 如：&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
            String regEx_special = "\\&[a-zA-Z]{1,10};";

            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_special = Pattern.compile(regEx_special, Pattern.CASE_INSENSITIVE);
            m_special = p_special.matcher(htmlStr);
            htmlStr = m_special.replaceAll(""); // 过滤特殊标签
            textStr = htmlStr;
        } catch (Exception e) {
            e.printStackTrace();
        }
        return textStr;// 返回文本字符串
    }

    public static String removeExtraCharacters(String oldStr){
        boolean frag_change = false;
        if(!TextUtils.isEmpty(oldStr)){
            String content = oldStr.trim();
            try{
                if(content.startsWith(",")){
                    content = content.substring(1, content.length());
                    frag_change = true;
                }
                if(content.endsWith(",")){
                    content = content.substring(0, content.length() - 1);
                    frag_change = true;
                }
                if(content.startsWith("，")){
                    content = content.substring(1, content.length());
                    frag_change = true;
                }
                if(content.endsWith("，")){
                    content = content.substring(0, content.length() - 1);
                    frag_change = true;
                }
                if(content.startsWith("】")){
                    content = content.substring(1, content.length());
                    frag_change = true;
                }
                if(content.endsWith("】")){
                    content = content.substring(0, content.length() - 1);
                    frag_change = true;
                }
                if(content.startsWith("【")){
                    content = content.substring(1, content.length());
                    frag_change = true;
                }
                if(content.endsWith("【")){
                    content = content.substring(0, content.length() - 1);
                    frag_change = true;
                }
                if(content.startsWith(":")){
                    content = content.substring(1, content.length());
                    frag_change = true;
                }
                if(content.endsWith(":")){
                    content = content.substring(0, content.length() - 1);
                    frag_change = true;
                }
                if(content.startsWith("：")){
                    content = content.substring(1, content.length());
                    frag_change = true;
                }
                if(content.endsWith("：")){
                    content = content.substring(0, content.length() - 1);
                    frag_change = true;
                }
                if(content.endsWith("]") && !content.contains("[")){
                    content = content.substring(0, content.length() - 1);
                    frag_change = true;
                }
                if(content.endsWith(")") && !content.contains("(")){
                    content = content.substring(0, content.length() - 1);
                    frag_change = true;
                }
                if(frag_change){
                    return removeExtraCharacters(content);
                }else{
                    return content;
                }
            }catch (Exception e){
                e.printStackTrace();
                return oldStr;
            }
        }else{
            return oldStr;
        }
    }
}
