比如一个字符串,里面有非法字法,假设:"*?/|\:'<>"这些字符为非法字符,我如何用正则把它们替换为空呢?
如:String startstr = "aa*?/|cc\:'<>bb";
转化结果为:Strng endstr = "aaccbb";我用:endstr = startstr.replaceAll("*?/|\:'<>", "");
这样当然不对了,里面的表达式怎么写呢(红色部分)?
感觉挺简单了,可没写对,请教各位了.(注:答案仅限正则方法,其它的如一个个判断再替换就不用说了,谢了)

解决方案 »

  1.   

    have a try
    endstr = startstr.replaceAll("\\p{Punct}", ""); 
      

  2.   


    是下面这样吗?
    public static void main(String[] args){
    String startstr = "aa*?/|\\cc:'<>bb";  String endstr = startstr.replaceAll("\\p{*?/|\\:' <>}", ""); //出错

    System.out.println(endstr);
    }这样会报错,不行的.
      

  3.   

    我给你的就是正则表达式了,你直接用就行,不需要改
    如果要把空格之类的字符也去掉的话
    String endstr = startstr.replaceAll("[\\p{Punct}[\\s]]", "");
      

  4.   


    public static void main(String[] args) {
    String str = "aa*?/|cc\\:' <>bb"; 
    String strTemp=str.replaceAll("(/)|(\\*)|(\\?)|(\\|)|(<)|(>)|(:)|(\\')|( )|(\\\\)", "");
    System.out.println(strTemp);
    }
    aaccbb
      

  5.   

    \p{Lower}   小写字母字符:[a-z]
    \p{Upper}  大写字母字符:[A-Z]
    \p{ASCII}  所有 ASCII:[\x00-\x7F]
    \p{Alpha}  字母字符:[\p{Lower}\p{Upper}]
    \p{Digit}  十进制数字:[0-9]
    \p{Alnum}  字母数字字符:[\p{Alpha}\p{Digit}]
    \p{Punct}  标点符号:!"#$%&'()*+,-./:;<=>?@[\]^_`{|}~
    \p{Graph}  可见字符:[\p{Alnum}\p{Punct}]
    \p{Print}  可打印字符:[\p{Graph}\x20]
    \p{Blank}  空格或制表符:[ \t]
    \p{Cntrl}  控制字符:[\x00-\x1F\x7F]
    \p{XDigit}  十六进制数字:[0-9a-fA-F]
    \p{Space}  空白字符:[ \t\n\x0B\f\r]