好吧,我已经花了几天时间试图找到一个好的解决方案来解决这个问题。 我有两种可能的地址格式。
28 Main St Somecity, NY 12345-6789
or
Main St Somecity, Ny 12345-6789
我需要做的是将两个字符串拆分成这样结构的数组
address[0] = HousNumber
address[1] = Street
address[2] = City
address[3] = State
address[4] = ZipCode
我的主要问题是如何解释缺少门牌号的情况。无需让整个数组将数据上移一位。
address[0] = Street
address[1] = City
address[2] = State
address[3] = ZipCode
[编辑]
对于那些想知道这就是我正在做的 atm 的人。 (更干净的版本)
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
最佳答案
反转字符串,进行分割,然后反转每个项目。
更新:从您发布的代码片段来看,在我看来,您是从 Google GClientGeocoder 地标获取地址的。如果这是正确的,为什么您会得到非结构化地址( Placemark.address
)而不是结构化地址( Placemark.AddressDetails
)?这将使您的生活变得更轻松,因为您必须尝试仅解析 ThoroughfareName(地址的街道级别部分),而不必解析其他所有内容。
关于javascript - javascript 中的地址字符串拆分,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2044232/