2011-10-26 39 views
2

我有这样的:SUBSTR和爆炸在JavaScript

var result = "(55.6105023, 12.357556299999942)"; 

我想去掉括号,我认为你可以用SUBSTR做到这一点(删除字符串中的第一个和最后一个字符)< - 但如果我知道长度,我只能设法删除最后一个字符。

然后我想通过使用爆炸()<把第一个数字55.6105023为可变lat和第二12.357556299999942可变lng - 但是这并不存在于JS

我怎么能这样做呢?

回答

2

使用slice(),这可能需要负指数不像substr()标准化和工作在所有的浏览器:

result.slice(1, -1); 

可以使用split()的另一部分:

var parts = result.slice(1, -1).split(", "); 
var lat = parts[0], lng = parts[1]; 

另外,您可以使用一个正则表达式:

var res = /^\(([\d.]+),\s*([\d.]+)\)$/.exec(result); 
var lat = res[1], lng = res[2]; 
+0

切片不会工作,未定义的功能片。 – Karem

+0

@Karem:我从大绿色标记中得知你已经意识到slice()能够工作吗? –

0

使用substr,replaceslice删除第一个和最后一个字符。使用split将字符串拆分为逗号中的数组。像这样:

var chunks = result.slice(1, -1).split(", "); 
var lat = chunks[0].trim(); 
var lng = chunks[1].trim(); 

我已经添加了修剪,以确保所有的空格都消失了。

+1

'修剪()'是ECMAScript的5和没有得到普遍支持(这是不支持的IE <9例如)。见https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/String/Trim –

+0

@TimDown:你说得对。感谢您指出了这一点。我讨厌那种东西......修剪是一个常见的功能:s –

0

您可以使用正则表达式来拉出号:

"(55.6105023, 12.357556299999942)".match(/[\d\.-]+/g); 
// returns ["55.6105023", "12.357556299999942"] 

正则表达式匹配数字,小数点和减号。

0
var result = "(55.6105023, 12.357556299999942)"; 
var substring = result.substring(1, result.length - 1); 
var coordinates = substring.split(","); 
var lat = coordinates[0]; 
var lng = coordinates[1]; 
0

可以使用字符串操作的功能,如splitslice解析出的数字(或甚至与匹配组正则表达式),并且Number构造解析从一个字符串数:

var parseResult = function(s) { 
    var ss = s.split(', '); 
    return [Number(ss[0].slice(1)), Number(ss[1].slice(0, -1))]; 
}; 

var x = parseResult('(55.6105023, 12.357556299999942)'); 
x[0]; // => 55.6105023 
x[1]; // => 12.357556299999942 
0

您可以通过使用substringindexOf做到这一点:

var result = "(55.6105023, 12.357556299999942)"; 
var lat = result.substring(result.indexOf('(')+1, result.indexOf(',')); 
var lon = result.substring(result.indexOf(', ')+1, result.indexOf(')')); 

alert(lat); // alerts 55.6105023 
alert(lon); // alerts 12.357556299999942 
0

这里另一种方式,所述第一数据到适当的JSON,然后转换成JavaScript数组:

str = str.replace('(', '[').replace(')', ']'); 
var data = JSON.parse(str), 
    lat = data[0], 
    lng = data[1];