过滤算法问题

filtering algorithm trouble

public static String filterPhoneNumber(String phoneNumber) {

    Character[] characters = new Character[phoneNumber.length()];
    if (characters.length > 9)
    {
        for (int i = 0; i < characters.length; i++)
        {
            if (characters[i] != ' ')
            {
                characters[i] = phoneNumber.charAt(i);
            } else
            {
                Log.d("asd", "wrroooonggggggggg");
            }
        }
    }
    return phoneNumber;
}

我试图过滤数字中的空字符,但是当在字符串中找到 2 个或更多空字符时,它只删除第一个。

您的问题是您在 for 循环中增加 i,当您找到 space 时,您会跳过它。当您在下一个循环中设置 characters 中的数字时,您已经跳过了一个条目。您必须使用两个步进变量,一个用于步进 phoneNumber,一个用于 characters.

您似乎想要 return 一个过滤器 phone 数字,但正在 return 您发送的值。

您可以使用字符串搜索和替换方法。

public static String filterPhoneNumber(String phoneNumber) {
  return phoneNumber.replaceAll(" ","");
}

使用方法如下:http://runnable.com/VUfHvPvHoEdLO3id/filterphonenumber-for-java

如果你使用

char[] characters = new char[phoneNumber.length()];

有效。

  1. 你的字符数组应该是 char[]
  2. 类型
  3. characters 数组永远不会被初始化,所以 characters[i] != ' ' 总是 true(前提是你固定了数组类型,否则应该抛出一个 NullPointerException
  4. 你正在分配 characters[i] = phoneNumber.charAt(i) 但你之后从未阅读它。

如果您的目标是删除空格,请执行以下操作:

public static String filterPhoneNumber(String phoneNumber) {
    return phoneNumber.replaceAll(" ", "");
}

工作 100%

public static String filterPhoneNumber(String phoneNumber) {

    byte[] number = phoneNumber.getBytes();
    byte[] array = new byte[phoneNumber.length()];
    int count=0;

    for (int i = 0; i < number.length; i++){
        if (number[i] != ' '){
            array[count++] = number[i];
        }
    }
    return new String(array);
}

public static void main(String[] args) {
    String res = filterPhoneNumber("   +28  23");
    System.out.println(res); //OUTPUT "+2823"
}