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

时间:2014-02-25 17:28:24

标签: java string replace char

我正在尝试从用户输入(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;
}

2 个答案:

答案 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]","");