我有一个字符串,想要删除除连字符、点和空格以外的所有特殊字符。
我使用filename.replaceAll("[^a-zA-Z0-9.-]","")
。它可以处理.
和-
,但不能处理空格。
我应该添加什么来让它也能处理空格?
如Pattern
类的Javadoc中所述,您可以使用\s
或空格字符来匹配空格。
\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 .-]", "")
\s
和-
。 - Karol Dowbecki\s
代表空格。如果您只想保留空格,则不建议使用 \s
,因为它还匹配:水平和垂直制表符、换行符和回车符等。 - 3limin4t0rfilename.replaceAll("[^a-zA-Z0-9 .-]", "")
。 - Karol Dowbecki您可以使用这个正则表达式 [^a-zA-Z0-9\s.-]
或者 [^a-zA-Z0-9 .-]
\s
匹配空格和制表符,(空格字符)仅匹配空格。
因此,在这种情况下,如果您想匹配空格,请使用以下内容:
filename.replaceAll("[^a-zA-Z0-9\\s.-]", "");
如果你只想匹配空格,可以使用以下代码:
filename.replaceAll("[^a-zA-Z0-9 .-]", "");