Ciao,
io utilizzerei questa logica:
codice:
Se il numero di telefono comincia con 3
il prefisso è formato dalle prime tre cifre
Altrimenti
Estrai le prime due cifre del numero e le cerchi nel tuo elenco
Se trovate
il prefisso è formato dalle prime due cifre
Altrimenti
Estrai le prime tre cifre del numero e le cerchi nel tuo elenco
Se trovate
il prefisso è formato dalle prime tre cifre
Altrimenti
Il prefisso è formato dalle prime quattro cifre
Fine se
Fine se
Fine se
Chiaramente questo prescinde da eventuali prefissi internazionali, tipo 0039 o +39 che però sono facilmente riconoscibili.
La logica di quello che ti ho scritto si basa sul fatto che, premesso che i prefissi possono essere solo di due, tre o quattro cifre, dovrebbe valere una semplice regola che impedisce alle prime cifre di un prefisso di essere uguali ad un prefisso più corto di sè.
In altre parole nessun prefisso di tre o quattro cifre può cominciare con 02 perché l'esistenza del prefisso di Milano lo impedisce, allo stesso modo nessun prefisso di quattro cifre può iniziare con 081 perché l'esistenza del prefisso di Napoli lo impedisce ecc... e, in senso opposto, se sai che, per esempio, il prefisso di Biandrate è 0321 sei sicuro che non esistono i prefissi 03 e 032, così come sapendo che il prefisso di Torino è 011 si può esser certi che il prefisso 01 non esiste.
Bada che questa regola non l'ho studiata o letta da qualche parte ma è solo frutto di osservazione e buon senso quindi potrebbe essere sbagliata (e in quel caso la logica che ti ho detto viene meno).
E' un problema carino, facci sapere se ne vieni fuori.
Ciao