1

我正在从数据库中提取一个字符串,该字符串需要分别解析为纬度和经度,该字符串被定义为“点”,格式如下:

(2.340000000,-4.50000000)

我正在尝试删除括号,然后用该方法解析它们,split()但我无法想出一个正确完成工作的正则表达式:

到目前为止,我已经尝试了许多替代方案,并且

var latlong = "(2.34000000, -4.500000000)"
latlong.replace('/[\(\)]//g','');
var coords = latlong.split(',');
var lat = coords[0];
var long = coords[1];

如果我运行它,我得到的只是: NaN, -4.500000

我究竟做错了什么?谢谢!

4

4 回答 4

3

似乎有效,但你有一个额外的斜线

var value = '(2.340000000,-4.50000000)';

//you had an extra slash here
//           ''''''''''''''''v
value = value.replace(/[\(\)]/g,'').split(',');

console.log(value[0]);
console.log(value[1]);​
于 2012-05-10T08:41:22.313 回答
0
 var latlong = "(2.34000000, -4.500000000)"
 var coords = latlong.replace(/[\(\) ]/g,'').split(',');

 console.log(coords[0])
 console.log(coords[1])
于 2012-05-10T08:58:35.843 回答
0

您可以删除拆分,只需将 match 函数与\((\-?\d+\.\d+), (\-?\d+\.\d+)\)将返回两个坐标的正则表达式一起使用。Firebug 控制台输出:

>>> "(2.34000000, -4.500000000)".match(/\((\-?\d+\.\d+), (\-?\d+\.\d+)\)/);
["(2.34000000, -4.500000000)", "2.34000000", "-4.500000000"]
于 2012-05-10T08:39:37.700 回答
0

您可以尝试使用math功能:

var latlong = "(2.34000000, -4.500000000)"
var coords = latlong.match(/\((-?[0-9\.]+), (-?[0-9\.]+)\)/);

var lat = coords[1];
var long = coords[2];
alert('lat: ' + lat);
alert('long: ' + long);
于 2012-05-10T08:44:27.610 回答