java - 删除java中的所有特殊字符

标签 java regex

<分区>

Possible Duplicate:
Replacing all non-alphanumeric characters with empty strings

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);
      }
   }
}

案例一

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

案例二

Input : hjdgh&jk8i0ssh6
Expect : hjdghjk8i0ssh6
Output : hjdghjk8i0ssh6

案例三

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

谁能帮我弄清楚,我的代码逻辑有什么问题??

最佳答案

使用 [\\W+]"[^a-zA-Z0-9]" 作为正则表达式来匹配任何特殊字符,并使用 String.replaceAll( regex, String) 用空字符串替换 spl 字符。请记住,由于 String.replaceAll 的第一个参数是一个正则表达式,因此您必须使用反斜杠将其转义以将 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);

关于java - 删除java中的所有特殊字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14361556/

相关文章:

java - 什么是NullPointerException,我该如何解决?

java - 如何在 Sublime Text 3 中自动导入 java 库?

Java正则表达式与斜杠匹配

javascript - 正则表达式返回 null

javascript - 使用javascript在字符串中查找电子邮件地址

java - 替换某些符号之间的文本

java - JSF 中的掩码 URL

java - 在 IntelliJ IDEA 中使用 EclipseLink 构建 Java 代码失败

java - 如何检查一个数字的每个数字是否大于或等于另一个数字?

ruby - 无休止的正则表达式 : Regex couldn't terminate while matching a 69 character String (killed after a week)