删除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\\-\\_\\<.*?>]", "")
;