|
|
|
![]() |
|
Strumenti |
![]() |
#1 |
Junior Member
Iscritto dal: Nov 2009
Messaggi: 9
|
[generico] Isolare indirizzo (postale/fisico) da stringa
Il mio obiettivo è quello di estrapolare un indirizzo NON formattato (dunque: "Via mazzini, 20100 Milano" ma anche "v. mazzini / milano MI" o "zona parioli roma") da un testo. Roba da niente.
Qualcuno sa darmi qualche indicazione di partenza? Ipotizzare di farlo solo con delle regex mi pare impossibile. Ho un DB con tutti i comuni, provincie, cap d'Italia ma zone e via sono fuori discussione. Stavo ipotizzando di passare il testo al setaccio e controllare se appare il nome di un comune giusto per fare un primo passo ma già mi pare piuttosto dispendioso in termini di cpu. Non penso che una mega regex con "milano|roma|genova|e altri 8000! comuni" sia una buona mossa. Non posso neanche però fare un ciclo e prendere parola per parola il testo e confrontarla con 8000 stringhe! Qualcuno sa darmi qualche suggerimento? |
![]() |
![]() |
![]() |
#2 |
Senior Member
Iscritto dal: Sep 2005
Città: Torino
Messaggi: 606
|
Ed invece regex!!!!!!
![]()
__________________
"Se proprio dovete piratare un prodotto, preferiamo che sia il nostro piuttosto che quello di qualcun altro." [Jeff Raikes] "Pirating software? Choose Microsoft!" |
![]() |
![]() |
![]() |
#3 |
Senior Member
Iscritto dal: Jul 2006
Città: Tristram
Messaggi: 517
|
Il problema non è certo di semplicissima soluzione. Provo a butta giù qualche idea, ma il tutto andrebbe raffinato un bel po'.
Per i comuni, potresti fare il precaricamento dei comuni che hai sul db in un array e ordinarlo, così sblocchi la possibilità di poter fare delle ricerche binarie (complessità log2(n) dove n=numero di comuni). In questo modo puoi evitare di fare gozziliardi di chiamate al db. Il problema è che, anche una volta isolata la singola parola all'interno della stringa, potresti avere un nome di comune all'interno dell'indirizzo (ad esempio, via Milano). Quindi dovresti preventivamente fare anche un precaricamento dei vari toponimi (via, viale, piazza etc etc) e controllare che il nome del comune non sia preceduto da una di queste paroline magiche (non risolveresti comunque il caso di indirizzi tipo viale Pincopallino da Certosa). Per i cap invece è abbastanza semplice, basta controllare sul formato a 5 cifre (e al limite cercarlo su una tabella di cap per ottenere la conferma dell'esistenza). L'indirizzo in sè, incrociando le dita, dovrebbe essere quello che resta della stringa. Ripeto, è solo qualche idea buttata lì, non avendo un formato standard la cosa è piuttosto complicata.
__________________
Il sole è giallo |
![]() |
![]() |
![]() |
Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 03:12.