2

Android のデフォルトの電話帳から取得した連絡先を使用しています。電話帳から連絡先を取得すると、「-」、「(」などの文字が表示されることがあります。

文字がわかっている場合は、 relpace()メソッドを使用して簡単に削除できますが、電話帳から取得した数字に % のような記号が表示されることがあるとクライアントから苦情がありました。

電話帳から取得した数字をフィルタリングして、テキスト フィールドに数字のみを表示し、それ以外の文字を表示しないようにする方法を教えてください。

現在string.replace("-","");、連絡先番号から「-」を削除するために使用しています。

4

3 に答える 3

10

使用できますPhoneNumberUtils.stripSeparators(String)(API 1+ で使用可能)。


編集済み

または、正規表現を使用できます‌</a> :

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

— range にないすべての文字を削除します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 に答える