Android ArrayList筛选器特殊字符
在我的应用程序中,我有一个ArrayList,其中列出了我电话簿中的所有联系人 不幸的是,有些记录像“tom@test.com". 如何删除所有带有特殊字符的记录,以便只获取字母和字符Android ArrayList筛选器特殊字符,android,arraylist,filter,Android,Arraylist,Filter,在我的应用程序中,我有一个ArrayList,其中列出了我电话簿中的所有联系人 不幸的是,有些记录像“tom@test.com". 如何删除所有带有特殊字符的记录,以便只获取字母和字符 Cursor cur = getContentResolver().query( ContactsContract.Contacts.CONTENT_URI, new String[] { ContactsContract.Contacts.DISP
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));
}
您可以使用PhoneNumberRutils.stripSeparator(字符串)(在API 1+中提供) 或者可以使用正则表达式:
filterNum = filterNum.replaceAll("[^0-9]+", "");
这将删除不在0…9范围内的所有字符。我想这会容易些。这是文档。什么是联系人??
我认为你必须用替换所有旧字符到新字符来替换你的arraylist
for (Contact contact : contacts)
contact.getText.replaceAll("@"," ");
我认为应该是这样的(如果这不是问题的解决方案,请写信给我:):
我自己记录下来的,谷歌:for(cur.moveToFirst();!cur.isAfterLast();cur.moveToNext(){if(!cur.getString(i).toLowerCase().contains(“@”.toLowerCase()){contacts.add(cursorContact.getString(i));}
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));
}
}
}