在我的应用程序中,我有一个ArrayList,其中包含我的电话簿的所有联系人。
不幸的是有像“tom@test.com”这样的记录。如何删除所有带有特殊字符的记录,以便我只获得仅限字母的记录?
Cursor cur = getContentResolver().query(
ContactsContract.Contacts.CONTENT_URI,
new String[] { ContactsContract.Contacts.DISPLAY_NAME }, null,
null, ContactsContract.Contacts.DISPLAY_NAME + " ASC");
int i = cur.getColumnIndex(ContactsContract.Contacts.DISPLAY_NAME);
for (cur.moveToFirst(); !cur.isAfterLast(); cur.moveToNext()) {
contacts.add(cur.getString(i));
}
答案 0 :(得分:0)
您可以使用PhoneNumberUtils.stripSeparators(字符串)(在API 1 +中提供)。
或者您可以使用正则表达式:
filterNum = filterNum.replaceAll("[^0-9]+", "");
将删除不在0 ... 9范围内的所有字符。我认为这会更容易。这是文档。
答案 1 :(得分:0)
什么是联系人? 我想你必须用replaceAll旧字符替换每个你的arraylist到新的字符
for (Contact contact : contacts)
contact.getText.replaceAll("@"," ");
答案 2 :(得分:0)
我认为它应该是这样的(如果这不是问题的解决方案写我:)):
boolean specialChar;
Cursor cur = getContentResolver().query(
ContactsContract.Contacts.CONTENT_URI,
new String[] { ContactsContract.Contacts.DISPLAY_NAME }, null,
null, ContactsContract.Contacts.DISPLAY_NAME + " ASC");
int i = cur.getColumnIndex(ContactsContract.Contacts.DISPLAY_NAME);
for (cur.moveToFirst(); !cur.isAfterLast(); cur.moveToNext()) {
// contacts.add(cur.getString(i));
specialChar = false;
for(char c : cur.getString(i).toCharArray()){
specialChar = false;
if(!Character.isDigit(c) || !Character.isLetterOrDigit(c)){
specialChar = true;
}
if(!specialChar){
contacts.add(cur.getString(i));
}
}
}