过滤算法麻烦

时间:2015-05-04 18:03:12

标签: java arrays filter

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个或更多空字符时,它只删除第一个字符。

4 个答案:

答案 0 :(得分:1)

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

您似乎想要返回过滤器电话号码,但返回您发送的值。

您可以使用String上的搜索和替换方法。

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

以下是它的使用方法:http://runnable.com/VUfHvPvHoEdLO3id/filterphonenumber-for-java

答案 1 :(得分:0)

如果您使用

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

它有效。

答案 2 :(得分:0)

  1. 您的字符数组应为char[]
  2. 类型
  3. 从不初始化字符数组,因此characters[i] != ' '始终为true(假设您修复了数组类型,否则应该抛出NullPointerException
  4. 您已分配characters[i] = phoneNumber.charAt(i)但之后从未阅读过。
  5. 如果您的目标是删除空格,请执行以下操作:

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

答案 3 :(得分:0)

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"
}