Java 搜索和删除字符串中的特定字符
我正在尝试从用户输入(字符串)中删除非字母和非数字字符。我不知道为什么,但当我运行代码时,我在以下行中得到一个“java.util.regex.PatternSyntaxException:null(在java.util.regex.Pattern中)错误Java 搜索和删除字符串中的特定字符,java,string,replace,char,Java,String,Replace,Char,我正在尝试从用户输入(字符串)中删除非字母和非数字字符。我不知道为什么,但当我运行代码时,我在以下行中得到一个“java.util.regex.PatternSyntaxException:null(在java.util.regex.Pattern中)错误 a.replaceAll(ch , ""); 我对java非常陌生,所以我可能犯了一个明显的错误,但我不确定 for循环中使用的数字是非字母或非数字字符的字符值 这是完整的代码 public static String helper(St
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;
}
公共静态字符串帮助器(字符串a)
{
对于(int i=0;i<48;i++)
{
char c=(char)i;
字符串ch=字符串。值(c);
a、 全部替换(ch,“”);
}
对于(int i=91;i<97;i++)
{
char c=(char)i;
字符串ch=字符串。值(c);
a、 全部替换(ch,“”);
}
对于(int i=123;i您是否在replaceAll
中尝试这样删除非数字和非字母字符
yourString= yourString.replaceAll("[^0-9A-Za-z]","");
我不知道为什么,但当我运行代码时,我得到一个“java.util.regex.PatternSyntaxException”
出现此错误是因为replaceAll
的第一个参数被视为正则表达式。如果ch
恰好是元字符,则可能会出现错误或意外行为。如果不想使用正则表达式行为,请使用replace
方法,该方法将第一个参数视为“普通”参数“字符串
还要注意,调用a.replaceAll(ch,”;
并忽略其返回值是无用的:Java中的字符串是不可变的,因此您需要将结果分配回a
,以便操作产生任何效果:
a = a.replace(ch , "");
String
是不可变的!另外,请阅读您尝试使用的方法的javadoc。如果您多次替换而不是使用String,请尝试使用stringbuilder将其固定为char c=(char)i;a=a.replace(String.valueOf(c),“”);玩这个把戏吗?@user3164890是的,应该。试一下,确认它对您的输入有效。