铁马冰河2000

导航

String过滤工具类-StringFilterUtil

============================================================================String过滤工具类:

package com.taoxw.utils.string;

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(StringCheckUtil.isEmpty(inputStr)) {
            return "";
        }
        return inputStr.replace(" ", "");
    }
    
    /** 过滤字符串,只允许字母和数字
     * @param inputStr
     * @return
     */
    public static String filterForChars(String inputStr) {
        if(StringCheckUtil.isEmpty(inputStr)) {
            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(StringCheckUtil.isEmpty(inputStr)) {
            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(StringCheckUtil.isEmpty(inputStr)) {
            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(StringCheckUtil.isEmpty(inputStr)) {
            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(StringCheckUtil.isEmpty(inputStr)) {
            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(); 
    }
}

============================================================================String过滤工具测试类:

    
    /**
     * 去除字符以及字符之间的内容
     */
    @Test
    public void test_filterBetween() {
        String context = "祝福大家(新年快乐),[万事如意],{虎年吉祥}";
//        String filterForBetween = StringFilterUtil.filterForBetween(context, '(', ')');
//        String filterForBetween = StringFilterUtil.filterForBetween(context, '[', ']');
        String filterForBetween = StringFilterUtil.filterForBetween(context, '{', '}');
        System.out.println(filterForBetween);
    }
    
    /** 过滤特殊字符,匹配http://地址//,获取Url地址*/
    @Test
    public void test_filterUrl() {
        String filterForHref = StringFilterUtil.filterForUrl("ddfff http://baidu.com// tianchongwu");
        System.out.println(filterForHref);
    }
    
    /** 过滤特殊字符,查询href条件*/
    @Test
    public void test_filterHref() {
        String filterForHref = StringFilterUtil.filterForHref("<a href=\"index.html\">主页</a>");
        System.out.println(filterForHref);
    }
    
    /** 过滤特殊字符,替换Html标记*/
    @Test
    public void test_filterHtml() {
//        String filterForHtml = StringFilterUtil.filterForHtml("");
//        String filterForHtml = StringFilterUtil.filterForHtml(null);
        String filterForHtml = StringFilterUtil.filterForHtml("<a href=\"index.html\">主页</a>");
        System.out.println(filterForHtml);
    }
    
    /** 过滤特殊字符,替换特殊字符*/
    @Test
    public void test_filterSpechars() {
        String filterForSpechars = StringFilterUtil.filterForSpechars("!@#陶雪武taoxuewu  123!@#");
        System.out.println(filterForSpechars);
    }
    
    /** 过滤特殊字符,只允许字母和数字 */
    @Test
    public void test_filterchars() {
        String filterForChars = StringFilterUtil.filterForChars("!@#陶雪武taoxuewu  123!@#");
        System.out.println(filterForChars);
    }

 

posted on 2022-02-03 17:46  铁马冰河2000  阅读(469)  评论(0编辑  收藏  举报