'POINT (-109.42948819496439 44.5177967942721)'
我將如何提取前述串lat和長值?
我想:
coords.substring(7,14) + ' ' + coords.substring(15,22)
但我不認爲我可以依靠它
'POINT (-109.42948819496439 44.5177967942721)'
我將如何提取前述串lat和長值?
我想:
coords.substring(7,14) + ' ' + coords.substring(15,22)
但我不認爲我可以依靠它
如果格式總是一樣的,你可以用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);
但對於字符串操作模式的最佳替代品是正則表達式。
// 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
。
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];
你應該解釋這段代碼在做什麼,以及爲什麼它比使用子串的方法更可靠。 – Adam