【发布时间】:2018-12-05 10:01:00
【问题描述】:
我有一个字符串,我想删除除连字符、点和空格之外的所有特殊字符。
我正在使用filename.replaceAll("[^a-zA-Z0-9.-]","")。它适用于. 和-,但不适用于空间。
我应该添加什么使它也适用于空间?
【问题讨论】:
-
你试过我的答案了吗?
-
您更新的答案对我有用 :)
我有一个字符串,我想删除除连字符、点和空格之外的所有特殊字符。
我正在使用filename.replaceAll("[^a-zA-Z0-9.-]","")。它适用于. 和-,但不适用于空间。
我应该添加什么使它也适用于空间?
【问题讨论】:
使用\s 或仅使用空格字符,如<a href="/default/index/tourl?u=aHR0cHM6Ly9kb2NzLm9yYWNsZS5jb20vamF2YXNlLzcvZG9jcy9hcGkvamF2YS91dGlsL3JlZ2V4L1BhdHRlcm4uaHRtbA%3D%3D" rel="nofollow" target="_blank">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 .-]", "")
【讨论】:
\s 和 -
\s 代表空白。如果你只想保留空格,我不会使用\s,因为它还匹配:水平和垂直制表符、换行符和回车符等。
filename.replaceAll("[^a-zA-Z0-9 .-]", "")
您可以使用此正则表达式[^a-zA-Z0-9\s.-] 或[^a-zA-Z0-9 .-]
\s 匹配空格,(空格字符)仅匹配空格。
所以在这种情况下,如果您想匹配空格,请使用:
filename.replaceAll("[^a-zA-Z0-9\\s.-]", "");
如果您只想匹配空间,请使用:
filename.replaceAll("[^a-zA-Z0-9 .-]", "");
【讨论】: