Indirizzo String Split in javascript
-
20-09-2019 - |
Domanda
Ok gente ho bombardate intorno per alcuni giorni cercando di trovare una buona soluzione per questo. Quello che ho è due possibili formati di indirizzo.
28 Main St Somecity, NY 12345-6789
or
Main St Somecity, Ny 12345-6789
Quello che dobbiamo fare è dividere entrambe le stringhe in giù in un array strutturato come tale
address[0] = HousNumber
address[1] = Street
address[2] = City
address[3] = State
address[4] = ZipCode
Il mio problema principale è come spiegare la mancanza di un numero civico. senza avere l'intero array spostare i dati fino uno.
address[0] = Street
address[1] = City
address[2] = State
address[3] = ZipCode
[Edit]
Per coloro che stanno chiedendo questo è quello che sto facendo atm. (Versione più pulita)
place = response.Placemark[0];
point = new GLatLng(place.Point.coordinates[1],place.Point.coordinates[0]);
FCmap.setCenter(point,12);
var a = place.address.split(',');
var e = a[2].split(" ");
var x = a[0].split(" ");
var hn = x.filter(function(item,index){
return index == 0;
});
var st = x.filter(function(item,index){
return index != 0;
});
var street = '';
st.each(function(item,index){street += item + ' ';});
results[0] = new Hash({
FullAddie: place.address,
HouseNum: hn[0],
Dir: '',
Street: street,
City: a[1],
State: e[1],
ZipCode: e[2],
GPoint: new GMarker(point),
Lat: place.Point.coordinates[1],
Lng: place.Point.coordinates[0]
});
// End Address Splitting
Soluzione
Invertire la corda, fare la scissione e poi invertire ogni elemento.
Aggiorna : Dal frammento che hai postato, mi pare che si ottiene l'indirizzo da un Google GClientGeocoder segnaposto. Se questo è corretto, perché stai ottenendo l'indirizzo non strutturato ( Placemark.address
) al posto di quello strutturato ( Placemark.AddressDetails
)? Questo renderebbe la vita più facile, come si dovrebbe cercare di analizzare solo il ThoroughfareName, che è la parte livello della strada di indirizzo, invece di dover analizzare tutto il resto pure.
Altri suggerimenti
function get_address (addr_str) {
var m = /^(\d*)\s*([-\s\w.]+\s(?:St|Rd|Ave)\.?)\s+([-\s\w\.]+),\s*(\w+)\s+([-\d]+)$/i.exec(s);
var retval = m.slice(1);
if (!retval[0]) retval = retval.slice(1);
return retval;
}
Si assuma tutte le strade termina con St, Rd o Ave.
indirizzo di var = /[0-9]/.match(string.charAt(0)) ? string.split ( " "): ["" ] .Concat (string.split (" "));
Questo non è particolarmente robusta, ma esso rappresenta per i due casi enumerati ed è concisa ad una sola linea.
Ho un problema simile che sto cercando di risolvere. Sembra che se si guarda per la prima spazio a destra del numero civico, è possibile separare il numero civico dal nome della via.
Qui a Boston si può avere un numero civico che include una lettera! Inoltre, ho visto i numeri civici che includono "1/2". Per fortuna, il mezzo è preceduta da un trattino, quindi non ci sono spazi nel numero di casa. Non so se questo è un principio o se sto solo avere fortuna.