删除java中字符串中的特殊字符?

如何删除字符串中除“ – _”之外的特殊字符。 现在我使用:

replaceAll("[^\\w\\s]", "") 

它删除所有特殊字符,但我想保留“ – _”。 谁能告诉我该怎么办?

使用replaceAll("[^\\w\\s\\-_]", "");

我所做的是在正则表达式中添加下划线和连字符。 我在连字符之前添加了\\因为它也用于指定范围: az表示a和z之间的所有字母。 使用\\转义它确保将其视为连字符。

这可能有所帮助:

replaceAll("[^a-zA-Z0-9_-]", "");

我怀疑你需要分配结果(如果你没有这样做),因为replaceAll()返回一个字符串,而不是更新字符串(String是不可变的):

 str = str.replaceAll("[^\\w\\s-]", ""); 

另请注意,正则表达式非常简单:

无需转义破折号-在字符类中:当在字符类中用作文字时,它必须是第一个或最后一个(否则它表示范围 ,如az等)。

根本没有必要提到下划线,因为它已经列出: \w 包括下划线字符!

 String str="owl@134_- abc"; String s=str.replaceAll(" [^a-zA-Z_-]+ ", ""); System.out.println(str); 

它将替换给定字符串中的特殊字符和空格。

输出将是: owlabc_-

 Pattern pt = Pattern.compile("[^a-zA-Z0-9_-]"); Matcher match = pt.matcher(c); while (match.find()) { String s = match.group(); c = c.replaceAll("\\" + s, ""); } 

考虑一下

使用此replaceAll("[\\w\\s\\-\\_\\<.*?>]", "") ;