2017-05-31 51 views
2

例如,如何從字符串中提取lat和long值?

'POINT (-109.42948819496439 44.5177967942721)' 

我將如何提取前述串lat和長值?

我想:

coords.substring(7,14) + ' ' + coords.substring(15,22) 

但我不認爲我可以依靠它

回答

2

如果格式總是一樣的,你可以用substring()做到這一點:

var x = 'POINT (-109.42948819496439 44.5177967942721)'; 
 

 
var lat = x.substring(x.indexOf('(') + 1, x.lastIndexOf(' ')); 
 
var lon = x.substring(x.lastIndexOf(' ') + 1, x.indexOf(')')); 
 

 
console.log(lat); 
 
console.log(lon);

但對於字符串操作模式的最佳替代品是正則表達式

6

// Robust matching of two space-separated floats within parentheses: 
 
let point = 'POINT (-109.42948819496439 44.5177967942721)'; 
 
let [, lat, long] = point.match(/\(([+-]?[0-9.]+) ([+-]?[0-9.]+)\)/); 
 

 
console.log(lat, long);

注:RegExp只有一樣強大的測試 - 提供個案保證。如果模式不匹配,則拋出TypeError

1
var input = 'POINT (-109.42948819496439 44.5177967942721)'; 
var res = input.replace("POINT ", ""); 
var res1 = res.replace(")", ""); 
var res2 = res1.replace("(", ""); 
var fields = res2.split(' '); 

var lat = fields[0]; 
var long = fields[1]; 
+0

你應該解釋這段代碼在做什麼,以及爲什麼它比使用子串的方法更可靠。 – Adam