从字符串中提取信息 - JavaScript

时间:2018-05-24 12:29:27

标签: javascript string

我目前正在实施Google地方自动填充功能,而我在React Native中使用的模块为我提供了整个字符串的地址,而不是地址组件。但是,我需要将邮政编码和城市分开。示例响应总是如下所示:

address: 'Calle Gran Vía, 8, 28013 Madrid, Spain

从这个字符串中我需要一个看起来像这样的对象:

{
  city: 'Madrid',
  postal_code: 28013,
}

我怎么能实现这个目标?

6 个答案:

答案 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);