我遇到了一些问题,其中一些联系人包含国家/地区代码,而另一些联系人则不知道。
我有用于获取正在保存在列表中的联系号码的代码。该列表如下所示:
[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
包含该号码(其中一些号码包含国家/地区代码,其他号码不包含该号码)。如何从拥有该代码的人那里删除国家/地区代码?
任何帮助或关键字搜索都将不胜感激,谢谢。
答案 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", "");
希望这会有所帮助......