Android ArrayList筛选器特殊字符

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

在我的应用程序中,我有一个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));
    }

您可以使用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));
            }
        }
    }