String.replaceAll不适用于任何类型的字符

时间:2016-11-08 07:59:48

标签: java string replaceall

所以我得到的是这个简单的方法,除了大写字母和小写字母以及字符串中的数字外,还应删除所有字符。

public static String toSimple(String arg) //redurziert einen String auf Buchstaben und ganze Zahlen
{
    String string = arg;
    int i = 0;
    while ( i < string.length())
    {
        if (((int)string.charAt(i) >= 48 && (int)string.charAt(i) <= 57)||((int)string.charAt(i) >= 65 && (int)string.charAt(i) <= 90)||((int)string.charAt(i) >= 97 && (int)string.charAt(i) <= 121))
            i+=1;
        else
        {
            int a = string.length();
            string = string.replaceAll(""+string.charAt(i), "");

            if (!(string.length() < a)) //Just in case
            {
                i+=1;
            }
        }

问题在于,在某些情况下,string.replaceAll不会改变任何东西,但会给出一个角色。我在调试器中检查了它,无法找到任何明显的错误或异常。我没有检查整个ASCII表,我知道问题会出现在&#39; $&#39; &#39;&#39;和&#39;。&#39;。 有任何建议如何解决?

1 个答案:

答案 0 :(得分:2)

String.replaceAll将正则表达式作为其第一个参数。

$?.regular expressions中的特殊字符。

使用String.replace代替 - 这实际上也在内部使用正则表达式,但它正确地转义了字符串。

但是,鉴于您正在使用String.replaceAll,您可以使用正则表达式完成整个事情:

return arg.replaceAll("[^A-Za-z0-9]", "");