2013-07-11 3 views
9

Je reçois des numéros de téléphone d'un appareil mobile, le format varie selon le format international ou non.Comparer des «numéros mobiles» - et/ou un format international

Scénario (ZA formats juste pour l'exemple):

numéros enregistrés dans la base de données sont toujours format international: +27827177982

Les chiffres que je reçois peut varier par exemple +27827177982 = 27827177982 = 0827177982 - préfixe international pour le nombre est +27

Comment puis-je correspondre au format international, même si je ne reçois pas le format international ???


Gardez à l'esprit:

Je ne peux pas faire la conversion juste pour 1 région.

Existe-t-il un moyen simple de comparer les numéros de téléphone mobile pour toutes les régions?

Prefixes plages dans quantité de caractères de référence: http://en.wikipedia.org/wiki/List_of_country_calling_codes


Mes idées:

  • Comparez les 9 derniers caractères du numéro, cela règle le préfixe région .. mais chaque région a-t-elle seulement '9 caractères à l'exclusion du préfixe'? Parcourez la base de données en comparant les numéros de téléphone quelques fois, par exemple. vérifier les 9 derniers chiffres - si aucune correspondance - vérifier les derniers 10 etc. (mais peut provoquer des correspondances indésirables)


Toute aide serait grandement appréciée

+0

Connaître le pays d'origine d'au moins un numéro de téléphone (en supposant que vous comparez toujours deux), est ici très utile ... Ensuite, vous pouvez construire un algorithme solide ... Je l'ai fait quelques fois, laissez-moi savoir si vous voulez toujours de l'aide :) – Grantly

Répondre

8

Vous pouvez regarder dans l'utilisation d'une bibliothèque pour cela. Par exemple, la bibliothèque libphonenumber de Google avec un C# port being here. En particulier, ces deux méthodes peuvent être dignes d'intérêt (Souligné par l'auteur)

de isNumberMatch - obtient un niveau de confiance si deux chiffres pourraient être le même.

getExampleNumber/getExampleNumberByType - fournit des numéros valides exemple pour tous les pays/régions, avec l'option de précisant quel type de numéro de téléphone par exemple est nécessaire.

+0

semble très prometteur! Merci! Je vais essayer et vous le faire savoir. –

+0

Je suis heureux d'avoir pu aider :) – keyboardP

0

Dans la plupart des pays (les Etats-Unis étant une exception notable), les numéros non internationaux commencent par un 0, donc la solution sera quelque chose comme:

  • Si le pays est sur une liste d'exceptions , traitez-le spécialement.
  • autrement
    • Si le premier caractère est 0, retirez-le et ajoutez le code de pays
    • Veiller à ce premier caractère est +.

Il n'y a pas de réponse facile à cela, parce qu'il n'y a pas de niveau international règlements ne comment les numéros de téléphone travail.

0

Que diriez-vous de quelque chose comme ceci. Ce qui est écrit sur le dessus de ma tête:

string sourcePhoneNumber = "...."; 
string phoneNumber = "...."; 

int baseRegionCountryCode = 44; 

if (phoneNumber.StartsWith("0") && !phoneNumber.StartsWith("00")) 
{ 
    phoneNumber = phoneNumber.SubString(0, 1); 
    phoneNumber = String.Format("{0}{1}", baseRegionCountryCode, phoneNumber); 
} 
else if (phoneNumber.StartsWith("+")) 
{ 
    phoneNumber = phoneNumber.Replace("+", "00"); 
} 

if (sourcePhoneNumber == phoneNumber) 
{ 
    // do something awesome.... 
} 
Questions connexes