Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/394.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 String.replaceAll不适用于任何类型的字符_Java_String_Replaceall - Fatal编程技术网

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

Java String.replaceAll不适用于任何类型的字符,java,string,replaceall,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.

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

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;
            }
        }
public static String to simple(String arg)//redurziert einen String auf Buchstaben and ganze Zahlen
{
字符串=arg;
int i=0;
而(i=48&&(int)string.charAt(i)=65&(int)string.charAt(i)=97&(int)string.charAt(i)将正则表达式作为其第一个参数

$
是中的特殊字符

而是使用-这实际上在内部也使用正则表达式,但它正确地转义字符串


但是,如果您使用的是
String.replaceAll
,则只需使用正则表达式即可完成整个操作:

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

请注意,可以使用字符文字来代替“幻数”-因此
(int)string.charAt(i)>=48
可以写成
string.charAt(i)>=0'
,这使您的意思更加明显。(在任何情况下都不需要转换为
int
)。这是一种从字符串中删除字符的非常可怕的方法。它不起作用。请尝试使用字符串“,,+a”-它不会删除“+”。通常,您会在StringBuilder中构建一个新字符串,但即使您是这样做的,您也会使用
String.substring
两次来获取字符前后的字符串。这要简单得多:d thanksOr
arg.replaceAll(\\P{Alnum}+“,”)
@Wiktor确实如此。我建议使用显式范围,因为它与OP的代码匹配。