java 特殊字符处理

在一些系统中经常可能会用到Cookie,但是Cookie的值是不能有特殊字符的,我也是在进过这个坑之后才想起来解决这个问题。另外,在sql中如果插入特殊字符也可能会阻碍sql正常执行,所以特殊字符处理还是有必要的。下面开始贴代码。

【方案一】:直接去掉特殊字符:

public static String replaceSpecialWord(String str) {    
    if (StringUtils.isNotEmpty(str)) {    
        String[] spaArr = { "\\","$","(",")","*","+",".","[", "]","?","^","{","}","|","'","%",",","," };    
        for (String key : spaArr) {    
            if (str.contains(key)) {    
                str = str.replace(key, "");    
            }    
        }    
    }    
    return str;    
 }

如果还有其他需要过滤的特殊字符,添加到上面的spaArr即可。

【方案二】:仅仅保留中文、英文,以及数字

public static String filterStr(String filterName){

        String regEx1 = "[\\u4e00-\\u9fa5]";
        String regEx2 = "[a-z||A-Z]";
        String regEx3 = "[0-9]";
        String s1 = matchResult(Pattern.compile(regEx1),filterName);
        String s2 = matchResult(Pattern.compile(regEx2),filterName);
        String s3 = matchResult(Pattern.compile(regEx3),filterName);
        String name=s1+s2+s3;
        if(name.isEmpty()){
            name="没有符合要求的字符";//为了不符合中文、英文、数字三种情况出现空的情况,有一个变量通用字符串.
        }
        return name;    
    }

方案二的方式就是只取字符串中的中文、英文以及数字了,并且按照中文+英文+数字的顺序组合。如果想按照其他顺序,修改s1+s2+s3的组合顺序即可。

搞定了。

【备注】:方案一中需要引用StringUtils包,自己引即可。方案二中需要引入java.util.regex.Pattern包。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值