package com.ruoyi.common.utils;

import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class StringFilterUtil {
    /** 过滤字符串，去除[]中的内容，包括[]
     * @param input
     * @return
     */
    public static String filterForBetween(String input, char startChar, char endChar) {
        int head = input.indexOf(startChar); // 标记第一个使用左括号的位置
        if (head == -1) {
            return input; // 如果context中不存在括号，什么也不做，直接跑到函数底端返回初值str
        } else {
            int next = head + 1; // 从head+1起检查每个字符
            int count = 1; // 记录括号情况
            do {
                if (input.charAt(next) == startChar)
                    count++;
                else if (input.charAt(next) == endChar)
                    count--;
                next++; // 更新即将读取的下一个字符的位置
                if (count == 0) // 已经找到匹配的括号
                {
                    String temp = input.substring(head, next); // 将两括号之间的内容及括号提取到temp中
                    input = input.replace(temp, ""); // 用空内容替换，复制给context
                    head = input.indexOf(endChar); // 找寻下一个左括号
                    next = head + 1; // 标记下一个左括号后的字符位置
                    count = 1; // count的值还原成1
                }
            } while (head != -1); // 如果在该段落中找不到左括号了，就终止循环
        }
        return input; // 返回更新后的context
    }

    /**
     * str.replaceAll("\\s*", ""); //s* 可以匹配空格、制表符、换页符等空白字符的其中任意一个。
     * str.replaceAll(" +","");  //去掉所有空格，包括首尾、中间
     * str.replaceAll(" ", ""); //去掉所有空格，包括首尾、中间
     * str.replace(" ",""); //去除所有空格，包括首尾、中间
     * str.trim(); //去掉首尾空格
     * @param inputStr
     * @return
     */
    public static String filterForBlank(String inputStr){
        if(inputStr.length()==0||inputStr==null) {
            return "";
        }
        return inputStr.replace(" ", "");
    }

    /** 过滤字符串，只允许字母和数字
     * @param inputStr
     * @return
     */
    public static String filterForChars(String inputStr) {
        if(inputStr.length()==0||inputStr==null) {
            return "";
        }
        String regEx = "[^a-zA-Z0-9]";
        Pattern p = Pattern.compile(regEx);
        Matcher m = p.matcher(inputStr);
        return m.replaceAll("").trim();
    }

    /**过滤字符串，替换特殊字符
     * <pre>
     * StringFilterUtil.filterForSpechars(null)
     * </pre>
     * @param inputStr
     * @return
     */
    public static String filterForSpechars(String inputStr) {
        if(inputStr.length()==0||inputStr==null) {
            return "";
        }
        String regEx = "[`~!@#$%^&*()+=|{}':;',\\[\\].<>/?~！@#￥%……&*（）——+|{}【】‘；：”“’。，、？]";
        Pattern p = Pattern.compile(regEx);
        Matcher m = p.matcher(inputStr);
        return m.replaceAll("").trim();
    }

    /**过滤字符串，去除html标记
     * <pre>
     * StringFilterUtil.filterForHtml(null) = ""
     * StringFilterUtil.filterForHtml("") = ""
     * StringFilterUtil.filterForHtml("<td>content</td>") = "content"
     * </pre>
     * @param inputStr
     * @return
     */
    public static String filterForHtml(String inputStr) {
        if(inputStr.length()==0||inputStr==null) {
            return "";
        }
        String regEx = "<.+?>";
        Pattern p = Pattern.compile(regEx, Pattern.DOTALL);
        Matcher m = p.matcher(inputStr);
        return m.replaceAll("");
    }

    /**过滤字符串，查询href条件
     * <pre>
     * StringFilterUtil.filterForHref(null)
     * </pre>
     * @param inputStr
     * @return
     */
    public static String filterForHref(String inputStr) {
        if(inputStr.length()==0||inputStr==null) {
            return "";
        }
        String regEx = "href=\"(.+?)\"";
        Pattern p = Pattern.compile(regEx);
        Matcher m = p.matcher(inputStr);
        if(m.find()) {
            return m.group(1);
        }else {
            return "";
        }
    }

    /**过滤字符串，匹配http://地址//，获取Url地址
     * @param inputStr
     * @return
     *     备注：地址后需要以空格结束
     */
    public static String filterForUrl(String inputStr) {
        if(inputStr.length()==0||inputStr==null) {
            return "";
        }
        String regEx = "(http://|https://){1}[\\w\\.\\-/:]+";
        Pattern p = Pattern.compile(regEx);
        Matcher m = p.matcher(inputStr);
        StringBuffer buffer = new StringBuffer();
        while(m.find()){
            buffer.append(m.group());
            buffer.append("\r\n");
        }
        return buffer.toString();
    }



}
