删除Java中的所有特殊字符


问题内容

import java.util.Scanner;
import java.util.regex.*;
public class io{
public static void main(String args[]){
Scanner scan = new Scanner(System.in);
String c;
if((c=scan.nextLine())!=null)
{
Pattern pt = Pattern.compile(“[^a-zA-Z0-9]”);
Matcher match= pt.matcher(c);
while(match.find()){
c=c.replace(Character.toString(c.charAt(match.start())),”“);
}
System.out.println(c);
}
}
}

情况1

Input : hjdg$h&jk8^i0ssh6
Expect : hjdghjk8i0ssh6
Output : hjdgh&jk8^issh6

情况二

Input : hjdgh&jk8i0ssh6
Expect : hjdghjk8i0ssh6
Output : hjdghjk8i0ssh6

情况3

Input : hjdgh&j&k8i0ssh6
Expect : hjdghjk8i0ssh6
Output : hjdghjki0ssh6

任何人都可以帮助我弄清楚,我的代码逻辑到底出了什么问题?


问题答案:

使用[\\W+]"[^a-zA-Z0-9]"作为正则表达式来匹配任何特殊字符,还可以使用String.replaceAll(regex,String)将spl字符替换为空字符串。请记住,作为String.replaceAll的第一个arg是一个正则表达式,您必须使用反斜杠对其进行转义以将em视为文字字符。

          String c= "hjdg$h&jk8^i0ssh6";
        Pattern pt = Pattern.compile("[^a-zA-Z0-9]");
        Matcher match= pt.matcher(c);
        while(match.find())
        {
            String s= match.group();
        c=c.replaceAll("\\"+s, "");
        }
        System.out.println(c);