Le soluzioni di cui sopra sono superiori, soprattutto se si utilizza Java e si riscontrano più numeri con più di 10 cifre come il prefisso del codice internazionale o numeri di interni aggiuntivi. Questa soluzione è di base (sono un principiante nel mondo delle espressioni regolari) e progettata pensando ai numeri di telefono degli Stati Uniti ed è utile solo per stringhe con solo 10 numeri con forse alcuni caratteri di formattazione o forse nessun carattere di formattazione (solo 10 numeri ). Pertanto, consiglierei questa soluzione solo per applicazioni semiautomatiche. Personalmente preferisco memorizzare i numeri come soli 10 numeri senza caratteri di formattazione, ma voglio anche essere in grado di convertire o pulire i numeri di telefono nel formato standard che le persone normali e le app / i telefoni riconosceranno immediatamente a piacimento.
Mi sono imbattuto in questo post alla ricerca di qualcosa che potessi usare con un'app per la pulizia del testo che abbia funzionalità PCRE Regex (ma senza funzioni Java). Pubblicherò questo qui per le persone che potrebbero utilizzare una semplice soluzione Regex pura che potrebbe funzionare in una varietà di editor di testo, pulitori, espansori o anche alcuni gestori di appunti. Io personalmente uso Sublime e TextSoap. Questa soluzione è stata creata per Text Soap poiché si trova nella barra dei menu e fornisce un menu a discesa in cui è possibile attivare azioni di manipolazione del testo su ciò che è selezionato dal cursore o su ciò che è negli appunti.
Il mio approccio consiste essenzialmente in due sostituzioni / ricerca e sostituzione di regex. Ogni ricerca e sostituzione di sostituzione coinvolge due espressioni regolari, una per la ricerca e una per la sostituzione.
Sostituzione / Cerca e sostituisci # 1
- La prima sostituzione / ricerca e sostituzione elimina i numeri non numerici da un numero altrimenti di 10 cifre a una stringa di 10 cifre.
Prima sostituzione / ricerca Regex:\D
- Questa stringa di ricerca corrisponde a tutti i caratteri che non sono una cifra.
Prima sostituzione / sostituzione dell'espressione regolare: "" (niente, nemmeno uno spazio)
- Lascia il campo sostitutivo completamente vuoto, non dovrebbero esistere spazi bianchi inclusi gli spazi. Ciò comporterà l'eliminazione di tutti i caratteri non numerici corrispondenti. Prima di questa operazione avresti dovuto inserire 10 cifre + caratteri di formattazione e uscire con 10 cifre senza caratteri di formattazione.
Sostituzione / Cerca e sostituisci # 2
- La seconda sostituzione / Ricerca e sostituzione di ricerca nell'ambito dell'operazione Cattura gruppi per prefisso
$1 , un gruppo di cattura per la seconda serie di tre numeri $2, e l'ultimo gruppo di cattura per l'ultima serie di quattro numeri $3. L'espressione regolare per la parte sostitutiva dell'operazione inserisce la formattazione del numero di telefono degli Stati Uniti tra il gruppo di cifre acquisito.
Seconda sostituzione / ricerca Regex:(\d{3})(\d{3})(\d{4})
Seconda sostituzione / sostituzione dell'espressione regolare:\($1\) $2\-$3
Il backslash \sfugge i caratteri speciali (, ), (<-whitespace), e -dal momento che li stiamo inserendo tra i nostri numeri catturati in gruppi di cattura $1,$2 , e $3per gli Stati Uniti ai fini di formattazione numero di telefono.
In TextSoap ho creato un pulitore personalizzato che include le due azioni dell'operazione di sostituzione, quindi in pratica sembra identico all'esecuzione di uno script. Sono sicuro che questa soluzione potrebbe essere migliorata, ma mi aspetto che la complessità aumenti un po '. Una versione migliorata di questa soluzione è accolta come esperienza di apprendimento se qualcuno vuole aggiungere a questo.