2011-10-26 71 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];