我目前正在实施Google地方自动填充功能,而我在React Native中使用的模块为我提供了整个字符串的地址,而不是地址组件。但是,我需要将邮政编码和城市分开。示例响应总是如下所示:
address: 'Calle Gran Vía, 8, 28013 Madrid, Spain
从这个字符串中我需要一个看起来像这样的对象:
{
city: 'Madrid',
postal_code: 28013,
}
我怎么能实现这个目标?
答案 0 :(得分:1)
这不是最“干净”或“顺利”的答案,但它是:
var response = "address: 'Calle Gran Vía, 8, 28013 Madrid, Spain";
var subStr = response.split(",")[2];
var obj = {
city: subStr.split(" ")[2],
postal_code: subStr.split(" ")[1]
};
console.log(obj);
答案 1 :(得分:1)
对于这个城市,我认为最好的方法是使用一系列城市并在字符串中搜索
var str = "Calle Gran Vía, 8, 28013 Madrid, Spain";
var cities = ["Paris", "Berlin", "Madrid"];
var city = cities.filter(function(item) {
if (str.search(item) != -1)
return item;
})[0] || null;
对于邮政编码,您应该使用正则表达式,具体取决于国家/地区(a good list of regex by country)
答案 2 :(得分:0)
可能用数组方法用','分割字符串,取数组的第三个元素并用''拆分,然后你有数据点。
答案 3 :(得分:0)
如果您始终可以指望它采用相同的格式,则可以执行以下操作。
var splitAdress = address.split(",");
//This will give you ["Calle Gran Vía", " 8", " 28013 Madrid", " Spain"]
splitAdress = splitAdress[2].split(" ");
//This will give you ["", "28013", "Madrid"]
您首先会根据逗号将字符串拆分为数组,然后通过拆分空格来跟进它。第二个数组中的额外元素是由于空间。这是@CBroe在评论中指出的一个例子。
答案 4 :(得分:-1)
list=adress.split(",")[2].split()
list [0]为您提供邮政编码
list [1]为您提供城市名称
这取决于“CalleGranVía,8”中是否总有逗号,如果不是,您可以使用list=adress.split(",")[-2].split()
答案 5 :(得分:-1)
您可能想尝试一下。
var address="Calle Gran Vía, 8, 28013 Madrid, Spain";
var splits = address.split(',')[2].trim().split(' ');
var newAdd = {
city : splits[1],
postal_code : splits[0]
}
console.log(newAdd);