2016-07-17 12 views
-2

Ich stecke mit einem Problem fest, bei dem einige Kontakte einen Ländercode enthalten, andere dagegen nicht.Entfernen der Ländervorwahl von der Telefonnummer

Ich habe Code zum Abrufen von Kontaktnummern, die in der Liste gespeichert werden. Die Liste sieht so aus:

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

Jetzt möchte ich Ländercode von jenen Nummern entfernen, die es haben. Ich kann keinen Weg finden, das zu überprüfen.

Hier ist mein Code zum Abrufen von Kontakten:

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()) ; 

    } 
} 

Hier allnumbers enthält die Nummer (wo einige mit ihnen Ländercode und andere nicht). Wie kann ich den Ländercode von denen entfernen, die ihn haben?

Jede Hilfe oder Schlüsselwörter zu suchen wird geschätzt, danke.

+0

Zu wenig Info. Wo ist dein Code? – Seelenvirtuose

+0

überprüfen Sie bitte bearbeiten –

+0

Das Entfernen der Ländercodes, wenn es mehr als eins in der Datei gibt, macht die Telefonnummern bedeutungslos. Es wäre möglicherweise besser, einen Standard-Ländercode für Nummern anzugeben, die keinen haben. Zum Beispiel, in Nordamerika, nehmen Sie +1 an. –

Antwort

0

In Ihrem Beispiel mit Zahlenfeld haben Sie Bindestrich (-) zwischen Ländercode. So können Sie einfach indexOf verwenden, um festzustellen, ob die Nummer den Ländercode hat. Sie können das gleiche tun mit regexp ([\d]+-[\d]+)

Auch Sie können zählen degits. Normalerweise haben Nummern ohne Ländercodes nur 10 Ziffern. Es hängt von Ihrer Situation ab

0

Wenn Sie das erste Vorkommen eines Strings mit '91 - 'entfernen möchten, können Sie einfach die replaceFirst() Methode verwenden. So Ihr Code so enden wird:

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

Wenn Sie, ob eine Zeichenfolge mit '91 beginnt überprüfen möchten -‘können Sie verwenden:

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

} 
+0

Bitte bearbeiten Sie mit mehr Informationen. Code-only und "try this" Antworten werden abgeraten, da sie keine durchsuchbaren Inhalte enthalten und nicht erklären, warum jemand "das versuchen sollte". – abarisone

-1

Probieren Sie

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

Hoffe, das hilft ...