从电话号码中删除国家/地区代

时间:2016-07-17 15:26:38

标签: java android country-codes

我遇到了一些问题,其中一些联系人包含国家/地区代码,而另一些联系人则不知道。

我有用于获取正在保存在列表中的联系号码的代码。该列表如下所示:

[9999999999, 91-8888888888, 91-0000000000, 1111111111]

现在,我想从拥有它的那些数字中删除国家/地区代码。我无法找到一种检查方法。

以下是我提取联系人的代码:

ContentResolver cr = getApplicationContext().getContentResolver(); //Activity/Application android.content.Context
    Cursor cursor = cr.query(ContactsContract.Contacts.CONTENT_URI, null, null, null, "UPPER(" + ContactsContract.Contacts.DISPLAY_NAME + ") ASC");
    if(cursor.moveToFirst())
    {

        do
        {
            String id = cursor.getString(cursor.getColumnIndex(ContactsContract.Contacts._ID));

            if(Integer.parseInt(cursor.getString(cursor.getColumnIndex(ContactsContract.Contacts.HAS_PHONE_NUMBER))) > 0)
            {
                Cursor pCur = cr.query(ContactsContract.CommonDataKinds.Phone.CONTENT_URI,null,ContactsContract.CommonDataKinds.Phone.CONTACT_ID +" = ?",new String[]{ id }, null);
                while (pCur.moveToNext())
                {
                    String contactName = pCur.getString(pCur.getColumnIndex(ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME_PRIMARY));
                    String contactNumber = pCur.getString(pCur.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER));

                    allContacts.add(contactName);
                    contactNumber = contactNumber.replaceAll("\\s+","");
                    allnumbers.add(contactNumber);

                    break;
                }
                pCur.close();
            }

        } while (cursor.moveToNext()) ;

    }
}

此处,allnumbers包含该号码(其中一些号码包含国家/地区代码,其他号码不包含该号码)。如何从拥有该代码的人那里删除国家/地区代码?

任何帮助或关键字搜索都将不胜感激,谢谢。

3 个答案:

答案 0 :(得分:1)

如果要删除包含' 91 - '的字符串的第一次出现,您只需使用replaceFirst()方法即可。所以你的代码最终会像这样:

contactNumber.replaceAll("\\s+","").replaceFirst("91-","");

如果你想检查字符串是否以' 91 - '开头,你可以使用它:

if (contactNumber.startsWith("91-")) {

}

答案 1 :(得分:0)

在包含数字数组的示例中,国家/地区代码之间有短划线( - )。因此,您只需使用 indexOf 来确定数字是否包含国家/地区代码。您可以使用regexp([\d]+-[\d]+

执行相同的操作

你也可以算一下。通常没有国家代码的号码只有10位数。这取决于你的情况

答案 2 :(得分:-1)

试试

contactNumber = contactNumber.replace("+91", "");

希望这会有所帮助......