如何从字符串中删除除-以外的所有特殊字符。和空间

时间:2018-12-05 10:01:01

标签: java regex string

我有一个字符串,要删除除连字符,点和空格之外的所有特殊字符。

我正在使用filename.replaceAll("[^a-zA-Z0-9.-]","")。它适用于.-,但不适用于空间。

我应该添加些什么以使其也适用于空间?

2 个答案:

答案 0 :(得分:1)

使用\s或仅使用空格字符,如Pattern class javadoc

所述
\s - A whitespace character: [ \t\n\x0B\f\r]
   - Literal space character

您必须将-字符转义为\-,以便它不会被解释为范围表达式,或者确保它保留为最后一个正则表达式字符。全部放在一起:

filename.replaceAll("[^a-zA-Z0-9\\s.-]", "")
filename.replaceAll("[^a-zA-Z0-9 .-]", "")

答案 1 :(得分:0)

您可以使用此正则表达式[^a-zA-Z0-9\s.-][^a-zA-Z0-9 .-]

\s匹配空白,(空格字符)仅匹配空格。

因此,在这种情况下,如果要匹配空格,请使用以下命令:

filename.replaceAll("[^a-zA-Z0-9\\s.-]", "");

如果只想匹配空间,请使用此:

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