我正在尝试从用户输入(String)中删除非字母和非数字字符。我不确定为什么,但是当我运行代码时,我得到一个“java.util.regex.PatternSyntaxException:null(在java.util.regex.Pattern中)错误的行
a.replaceAll(ch , "");
我对java很新,所以我可能犯了一个明显的错误,但我不确定..
for循环中使用的数字是非字母或非数字字符的字符值。
以下是此
的完整代码public static String helper(String a)
{
for(int i = 0; i < 48; i++)
{
char c = (char)i;
String ch = String.valueOf(c);
a.replaceAll(ch , "");
}
for(int i = 91; i < 97; i++)
{
char c = (char)i;
String ch = String.valueOf(c);
a.replaceAll(ch , "");
}
for(int i = 123; i <= 127; i++)
{
char c = (char)i;
String ch = String.valueOf(c);
a.replaceAll(ch , "");
}
return a;
}
答案 0 :(得分:1)
我不确定为什么但是当我运行代码时,我得到一个“java.util.regex.PatternSyntaxException”
您收到此错误,因为replaceAll
的第一个参数被视为正则表达式。如果ch
恰好是元字符,则可能会出现错误或意外行为。如果您不想使用正则表达式行为,请使用replace
方法,该方法将第一个参数视为“普通”String
。
另请注意,调用a.replaceAll(ch , "");
并忽略其返回值是无用的:Java中的字符串是不可变的,因此您需要将结果分配回a
以使操作产生任何效果:
a = a.replace(ch , "");
答案 1 :(得分:0)
您是否在replaceAll
中尝试这样做以删除非数字和非字母字符
yourString= yourString.replaceAll("[^0-9A-Za-z]","");