我在Java编码,我有一个字符串,我想保留字母,数字,“:”,“ - ”和空格,并删除其他所有内容。所以,我使用了这段代码:
str=str.replaceAll("[^\\dA-Za-z#:-\\s*]", "");
它不起作用。
直到
才能正常工作str=str.replaceAll("[^\\dA-Za-z#:-]", "");
其他所有内容,除了字母,数字和字符“:”和“ - ”都被删除
但是当我试图为空白字符添加条件时,我遇到了问题。
感谢您的帮助。
提前谢谢。
答案 0 :(得分:1)
短划线必须是字符类中的第一个或最后一个字符,否则它将被解释为范围指示符(如[A-Z]
中所示);在你的情况下,[:-\\s]
是一个毫无意义的范围。使用
str = str.replaceAll("[^\\dA-Za-z#:\\s-]+", "");
(或者您是否也想在文字中留下星号)?
答案 1 :(得分:1)
-
在字符类中使用时描述范围..
在您的情况下,您实际上是在尝试匹配范围:
到\s
的字符,这是无效范围。
将-
移至开头
[^-\\dA-Za-z#:\\s]
或结束
[^\\dA-Za-z#:\\s-]