JAVA 去除字符串的非法字符

来源:互联网 发布:兄弟连java怎么样 编辑:程序博客网 时间:2024/05/16 15:53

方法一:使用正则表达式,只保留常见字符

String wrongString = "sdfsa f,ds。";
String correct = wrongString.replaceAll("[^0-9a-zA-Z]J*","");
匹配结果:

共找到 2 处匹配:



方法二:根据ASCII码匹配,去掉不合法的ASCII码

 /**     * 清除ASCII码中的换行符等特殊字符     * @param dirtyString     * @return     */    public static String cleanString(String dirtyString){        char[] charArray = dirtyString.toCharArray();        String cleanStr = "";        for (char charactor:charArray) {            Integer[] wrongChar={1,2,3,4,5,6,7,8,12,13,14,15,16,17,18,19,20,12,22,23,24,25,26,27,28,29,30,31};            List<Integer> arr = Arrays.asList(wrongChar);            Integer thisChar = new Integer(charactor);            if(arr.contains(thisChar)){//如果包含非法字符,就跳过                JLogUtils.i("Alex","警告:该字符串包含非法ASCII字符"+dirtyString);                continue;            }else if(thisChar==10){//换行符处理,把换行符换成\n,修复不同android版本不兼容的问题                cleanStr = cleanStr.concat("\n");            }else {//正常字符                cleanStr = cleanStr.concat(String.valueOf(charactor));            }        }        return cleanStr;    }

提供一个常用正则验证函数,只允许数字字母和空格

 //判断是否是数字字母和空格    public static boolean checkInput(Context context, String str) {        Pattern p = Pattern.compile("[a-zA-Z0-9\\s]*");        Matcher m = p.matcher(str);        if (!m.find()) {                      return false;        } else {            if (m.group(0).length() != str.length()) {                               return false;            }        }        return true;    }


0 0