2013-07-11 13 views
9

Sto ricevendo numeri di telefono da un dispositivo mobile, il formato varia dal formato internazionale o meno.Confronto di 'numeri mobili' - e/o formato internazionale

Scenario (ZA formati solo per l'esempio):

numeri registrati nella banca dati sono sempre formato internazionale: +27827177982

Numbers ricevo può variare per esempio +27827177982 = 27827177982 = 0827177982 - prefisso internazionale per numero è +27

Come si abbinano al formato internazionale, anche se non ricevo il formato internazionale ???


Tenete a mente:

non posso fare la conversione solo per 1 regione.

C'è un modo semplice per confrontare i numeri di cellulare per tutte le regioni?

prefissi gamme di quantità di caratteri di riferimento: http://en.wikipedia.org/wiki/List_of_country_calling_codes


Le mie idee:

  • Confronta gli ultimi 9 caratteri del numero, questo si esclude il prefisso regione .. . ma ogni regione ha solo "9 caratteri escluso il prefisso"?

  • Passare attraverso il database confrontando i numeri di telefono un paio di volte, ad es. verificare la presenza di ultimi 9 numeri - se non può competere - verificare la presenza di ultimi 10 ecc (ma può causare partite indesiderati)


Qualsiasi aiuto sarebbe molto apprezzato

+0

Conoscere il paese di origine di almeno un numero di telefono (supponendo che si sta sempre confrontando due), è molto utile qui ... Poi si può costruire un solido algoritmo ... Ho fatto questo alcune volte, fammi sapere se vuoi ancora assistenza :) – Grantly

risposta

8

Si consiglia di guardare nell'usare una libreria per questo. Ad esempio, la libreria di Google libphonenumber con un C# port being here. In particolare, questi due metodi possono essere merita di essere esaminata (sottolineatura mia)

isNumberMatch - ottiene un livello di confidenza su se due numeri potrebbero essere lo stesso.

getExampleNumber/getExampleNumberByType - fornisce validi numeri esempio per tutti i paesi/regioni, con la possibilità di specificare cui è necessario tipo di numero di telefono esempio.

+0

Sembra molto promettente! Grazie! Darò un colpo e ti faccio sapere. –

+0

Felice di poter aiutare :) – keyboardP

0

Nella maggior parte dei paesi (gli Stati Uniti di essere una notevole eccezione), i numeri non internazionali iniziano con uno 0, in modo che la soluzione sarà qualcosa di simile a:

  • Se il paese è in un elenco di eccezioni , affrontalo appositamente.
  • altrimenti
    • Se il primo carattere è 0, toglierlo e aggiungere prefisso internazionale
    • Garantire primo carattere è +.

non v'è alcuna risposta facile a questo, perché non ci sono regole fisse a livello internazionale non come numeri di telefono di lavoro.

0

Come su qualcosa di simile. Questo è scritto fuori dalla parte superiore della mia testa:

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.... 
} 
Problemi correlati