replaceAll小心使用

来源:互联网 发布:c语言病毒吃内存 编辑:程序博客网 时间:2024/05/16 08:54

今天做了一个需求,就是剔除前端传过来的特殊字符,就是把前端的特使字符替换成空字符串(""),关于特殊字符的配置在我们这边,我采用的是把特殊字符的


String source  = "afegie*‰╫~*?!&@“”*‰╫~*?!&@“”ugur";
String ss = "╰┋┊┇┆│┏┯┓┨┠‖┫┣┏┓「╬╔╗$▁▂▃▄▅▆▇╳╛╒*‰╫~*?!&@“”丶'━━━︽☀@{}✿❤";//特殊字符配置表
for (int i = 0; i < ss.length(); i++) {
//            source = source.replace(ss.charAt(i), ' ');
try{
            source = source.replaceAll(ss.charAt(i)+"", " ");//采用的是replaceAll
}catch (PatternSyntaxException e) {
System.out.println("===================");
source = source.replaceAll("\\"+ss.charAt(i)+"", " ");
}
    }

System.out.println(source);


注意:由于replaceAll方法的第一个参数是正则表达式,但是切割出来的字符,有一些是正则中的特殊字符(*),就会抛出PatternSyntaxException 异常,碰到这个说明这个正则参数在正则里面是一个特殊值,应该将其转义再用。