Javascript 从字符串中解析出所有long/lat

Javascript 从字符串中解析出所有long/lat,javascript,Javascript,嗨,我正在尝试获取以这种格式到达的每个经度和纬度: (52.99315484540412, -1.179145092694469)(52.99315323095451, -1.1786797294303852)(52.993042641012025, -1.1789238104507405)(52.99308461678997, -1.1791705736801106) 我希望将它们存储在这些字符串中tmpLon1 tmpLat1 tmpLon2 tmpLat2 tmpLon3 tmpLat3

嗨,我正在尝试获取以这种格式到达的每个经度和纬度:

(52.99315484540412, -1.179145092694469)(52.99315323095451, -1.1786797294303852)(52.993042641012025, -1.1789238104507405)(52.99308461678997, -1.1791705736801106)
我希望将它们存储在这些字符串中
tmpLon1 tmpLat1 tmpLon2 tmpLat2 tmpLon3 tmpLat3 tmpLon4 tmpLat4

到目前为止,我已经做了这个编码,但它无法工作,任何机构有一个更好的方法,可以编码了一个例子,请

//(52.99315484540412, -1.179145092694469)(52.99315323095451, -1.1786797294303852)(52.993042641012025, -1.1789238104507405)(52.99308461678997, -1.1791705736801106)

//Remove all the shit
longlat = (longlat.replace(/\(/g,""));
longlat = (longlat.replace(/\)/g,"|"));
longlat = (longlat.replace(/\ /g,""));

//52.99315484540412,-1.179145092694469|52.99315323095451, -1.1786797294303852|52.993042641012025, -1.1789238104507405|52.99308461678997, -1.1791705736801106|

//Now split out each long lat
tmpLon1 = longlat.split(",","1"); //ok
tmpLat1 = longlat.replace(tmpLon1 + ",","");
tmpLon2 = tmpLat1;
tmpLat1 = tmpLat1.split("|","1"); //ok
tmpLon2 = tmpLon2.split("|","2");
tmpLon2 = tmpLon2.replace(tmpLat1,"");

tmpLat2 = longlat.split(",","4");

tmpLon3 = "";
tmpLat3 = "";

tmpLon4 = "";
tmpLat4 = "";   

我想你可以做如下事情: (假设输入是您的输入字符串)

input=input.replace(/\s/,“”)//删除空格
var pairs_strings=input.substring(1,-1).split(“”)//拆下起点和终点的制动器,然后分成两对
var pairs=新数组();
对于(var i=0;i我会这样做:

var a = "(52.99315484540412, -1.179145092694469)(52.99315323095451, -1.1786797294303852)(52.993042641012025, -1.1789238104507405)(52.99308461678997, -1.1791705736801106)",
    latLngs = [], 
    pairs = a.replace(/^\(|\)$/g,'').split(')(');

for(var i=0,pair;pair=pairs[i];i++) {
  pair = pair.split(',');
    latLngs.push({lat: +pair[0], lng: +pair[1]});  
}
console.log(latLngs);
你可以在这里看到它:

您也可以简单地执行以下操作:

var a = "(52.99315484540412, -1.179145092694469)(52.99315323095451, -1.1786797294303852)(52.993042641012025, -1.1789238104507405)(52.99308461678997, -1.1791705736801106)",

JSON.parse(a.split(')(').join('],[').replace('(','[[').replace(')',']]'));

但这需要存在JSON对象,这在ie7及以下版本中是不存在的。这可以通过包含在此处找到的json2.js文件来解决:

如果您的输入格式没有更改,您可以在3行中完成:

var str = "(52.99315484540412, -1.179145092694469)(52.99315323095451, -1.1786797294303852)(52.993042641012025, -1.1789238104507405)(52.99308461678997, -1.1791705736801106)";   
var pattern = /([\d\.-]+),\s([\d\.-]+)\)\(([\d\.-]+),\s([\d\.-]+)\)\(([\d\.-]+),\s([\d\.-]+)\)\(([\d\.-]+),\s([\d\.-]+)/;
var result = str.match(pattern);
要获得结果,请使用:

tmpLon1=result[1];
tmpLon2=result[3];
tmpLon3=result[5];
tmpLon4=result[7];

tmpLat1=result[2];
tmpLat2=result[4];
tmpLat3=result[6];
tmpLat4=result[8];

拯救正则表达式!既然你知道字符串的格式,你可以在这里使用正则表达式来搜索你

var str = "(52.99315484540412, -1.179145092694469)(52.99315323095451, -1.1786797294303852)(52.993042641012025, 1.1789238104507405)(52.99308461678997, -1.1791705736801106)";

var regex = /\((-?[0-9]+\.[0-9]+), (-?[0-9]+\.[0-9]+)\)/g;
var latlonArray = [];

var match = regex.exec(str);
while (match) {
    latlonArray.push({
        "lat" : match[1],
        "lon" : match[2]
    });
    match = regex.exec(str);
}

var tmpLon1 = latlonArray[0].lon;
var tmpLat1 = latlonArray[0].lat;

var tmpLon2 = latlonArray[1].lon;
var tmpLat2 = latlonArray[1].lat;

var tmpLon3 = latlonArray[2].lon;
var tmpLat3 = latlonArray[2].lat;

var tmpLon4 = latlonArray[3].lon;
var tmpLat4 = latlonArray[3].lat;
例如:

latlonArray
是一个具有
lat
lon
属性的对象数组,包含在字符串中找到的属性

注意:我在这里使用的正则表达式只是我想到的东西。它与您的示例输入一起工作,但不一定是最好的

另外请注意:这不是“拉出并使用”JavaScript。它只是向您展示了另一种方法。我建议通过各种方式对其进行优化(例如,将所有变量移到顶部,等等)

要获得结果,请执行以下操作:

tmpLon1=result[0];
tmpLon2=result[2];
tmpLon3=result[4];
tmpLon4=result[6];

tmpLat1=result[1];
tmpLat2=result[3];
tmpLat3=result[5];
tmpLat4=result[7];

如果你的字符串有5个lat/lng对呢?或者更糟的是,6个??它不会,我的系统不会让它们只写[object 1][object 2]@user393273:第一个示例生成一个对象数组,其中每个obejct都有一个
lat
和一个
lng
属性,您可以访问该属性以获取数字。第二个示例创建一个数组数组,其中每个子数组包含
lat,lng
var str = "(52.99315484540412, -1.179145092694469)(52.99315323095451, -1.1786797294303852)(52.993042641012025, -1.1789238104507405)(52.99308461678997, -1.1791705736801106)";
var str = str.replace(/\)\(/g,', ').replace(/\(|\)/g,'').split(", ");
tmpLon1=result[0];
tmpLon2=result[2];
tmpLon3=result[4];
tmpLon4=result[6];

tmpLat1=result[1];
tmpLat2=result[3];
tmpLat3=result[5];
tmpLat4=result[7];