0

我试图从我的字符串中删除符号,但这不起作用。就像模式匹配器似乎坏了。我知道我只是错过了一些东西。谢谢。

Pattern p = Pattern.compile("[,\\.;:{}/\\[\\]<>?`~!@#$%^&*()_+=]");
Matcher m = p.matcher("April's");
Matcher m1 = p.matcher("Place to go!");
setName(m.replaceAll(""));
setDescription(m1.replaceAll(""));

我预计会看到这个:

输入-“莎拉的范围”

输出 - “Sarahs Scope”

我目前看到的是:

输入-“莎拉的范围”

输出-“莎拉的范围”

4

3 回答 3

1

请改用此模式:

"[\\'\\\",\\.;:{}/\\[\\]<>\\?`~!@#\\$%\\^&\\*\\(\\)_\\+=]"

或:

"[\\'\\\",\\.;:{}/\\[\\]<>\\?\\`~!@#\\$%\\^&\\*\\(\\)_\\+=]"

但也许这样做会更容易:

"[^[a-z][A-Z][0-9]]"

或者

"[^a-zA-Z0-9]"

因为您正在搜索任何符号,所以它可以是除字母和数字之外的任何字符。

于 2013-11-06T17:15:17.493 回答
0

看起来您正在尝试删除所有不是字母或空格的字符。如果是这种情况,那么这将起作用:

"[^\\sA-Za-z]"

或者,如果您想包含数字:

"[^\\sA-Za-z0-9]"

或者,如果您明确知道要保留的内容:"[^然后是要保留的内容,然后是]".


如果您只是想删除 aString中与模式不匹配的所有字符,那么使用String.replaceAll().


有关正则表达式的更多信息,请参阅正则表达式教程

于 2013-11-06T17:20:43.337 回答
0

我相信你在这里寻找\\p{Punct}正则表达式属性来清除所有标点符号:

考虑这段代码:

Pattern p = Pattern.compile("\\p{Punct}+");
Matcher m = p.matcher("Sarah's Scope");
System.out.println(m.replaceAll(""));
//> Sarahs Scope
于 2013-11-06T17:46:18.027 回答