2

我正在处理从我在 Android 中的默认电话簿中获取的联系人。当我从电话簿中获取联系人时,有时我会收到“-”、“(”等字符。

如果这些字符是已知的,那么我可以使用relpace()方法轻松删除它们,但我的客户抱怨说,有时他们在从电话簿获取的号码中也会看到 % like 符号。

请建议我,如何过滤从电话簿中获取的数字,以便我的文本字段中只有数字,没有其他字符。

目前我正在使用string.replace("-","");从联系电话中删除“-”。

4

3 回答 3

10

您可以使用PhoneNumberUtils.stripSeparators(String)(在 API 1+ 中可用)。


已编辑

或者你可以使用正则表达式‌</a>​:

filterNum = filterNum.replaceAll("[^0-9]+", "");

- 这将删除所有不在范围内的字符0...9。我认为这会更容易。这是文档

于 2013-03-13T05:47:57.467 回答
2
string.replaceAll("[^0-9\\+]", "");

这里我假设数字内不会有'+'(仅在前面)。如果有任何可能,则必须单独检查

于 2013-03-13T06:41:37.910 回答
1

我已经使用核心 Java 概念解决了这个问题。

/**
     * removeSpecialCharacters
     * @param number
     * @return
     */
    private String removeSpecialCharacters(String number) {
        String filterNum = number;
        if(filterNum.contains("-")){
            filterNum = filterNum.replace("-", "");
        }
        if(filterNum.contains("(")){
            filterNum = filterNum.replace("(", "");
        }
        if(filterNum.contains(")")){
            filterNum = filterNum.replace(")", "");
        }
        if(filterNum.contains(".")){
            filterNum = filterNum.replace(".", "");
        }
        if(filterNum.contains("/")){
            filterNum = filterNum.replace("/", "");
        }
        if(filterNum.contains(",")){
            filterNum = filterNum.replace(",", "");
        }
        if(filterNum.contains("#")){
            filterNum = filterNum.replace("#", "");
        }
        if(filterNum.contains("*")){
            filterNum = filterNum.replace("*", "");
        }
        if(filterNum.contains("+")){
            filterNum = filterNum.replace("+", "");
        }
        if(filterNum.contains("N")){
            filterNum = filterNum.replace("N", "");
        }
        if(filterNum.contains(";")){
            filterNum = filterNum.replace(";", "");
        }
        if(filterNum.contains("%")){
            filterNum = filterNum.replace("%", "");
        }
        if(filterNum.contains(" ")){
            filterNum = filterNum.replace(" ", "");
        }
        if(filterNum.contains("@")){
            filterNum = filterNum.replace("@", "");
        }
        if(filterNum.contains("$")){
            filterNum = filterNum.replace("$", "");
        }
        if(filterNum.contains("^")){
            filterNum = filterNum.replace("^", "");
        }
        if(filterNum.contains("&")){
            filterNum = filterNum.replace("&", "");
        }
        if(filterNum.contains("_")){
            filterNum = filterNum.replace("_", "");
        }
        if(filterNum.contains("=")){
            filterNum = filterNum.replace("=", "");
        }
        if(filterNum.contains("~")){
            filterNum = filterNum.replace("~", "");
        }
        if(filterNum.contains("`")){
            filterNum = filterNum.replace(";", "");
        }

        return filterNum;
    }
于 2013-03-13T06:25:48.340 回答