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

Nir*_*ksh 5 java regex string

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

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

我应该添加什么才能使其也适用于太空?

Kar*_*cki 2

使用或\s仅使用空格字符,如javadoc 类中所述Pattern

\s - A whitespace character: [ \t\n\x0B\f\r]
   - Literal space character
Run Code Online (Sandbox Code Playgroud)

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

filename.replaceAll("[^a-zA-Z0-9\\s.-]", "")
filename.replaceAll("[^a-zA-Z0-9 .-]", "")
Run Code Online (Sandbox Code Playgroud)