0

我正在用 Java 编码,我有一个字符串,我想在其中保留字母、数字、“:”、“-”和空格并删除其他所有内容。所以,我使用了这段代码:

str=str.replaceAll("[^\\dA-Za-z#:-\\s*]", "");

它不起作用。

它确实工作正常,直到

str=str.replaceAll("[^\\dA-Za-z#:-]", "");

除去字母、数字和字符“:”和“-”之外的所有其他内容

但是,当我尝试为空白字符添加条件时,我遇到了问题。

我会很感激你的帮助。

先感谢您。

4

2 回答 2

1

破折号必须是字符类中的第一个或最后一个字符,否则将被解释为范围指示符(如[A-Z]);在你的情况下[:-\\s]是一个毫无意义的范围。采用

str = str.replaceAll("[^\\dA-Za-z#:\\s-]+", "");

(或者您是否也想在文本中保留星号)?

于 2013-09-22T15:14:21.427 回答
1

-在字符类中使用时描述范围..

在您的情况下,您实际上是在尝试匹配无效范围内的:字符。\s


移动-到起点

[^-\\dA-Za-z#:\\s]

或结束

[^\\dA-Za-z#:\\s-]
于 2013-09-22T15:14:49.550 回答