Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/321.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 搜索和删除字符串中的特定字符_Java_String_Replace_Char - Fatal编程技术网

Java 搜索和删除字符串中的特定字符

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

我正在尝试从用户输入(字符串)中删除非字母和非数字字符。我不知道为什么,但当我运行代码时,我在以下行中得到一个“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;
}
公共静态字符串帮助器(字符串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是的,应该。试一下,确认它对您的输入有效。