
本文介绍一种简洁、安全、高性能的方式,将形如 LatLng(lat,lng) 的字符串批量解析为标准二维数值数组,避免手动字符串切割与循环拼接,大幅提升代码可读性与执行效率。
本文介绍一种简洁、安全、高性能的方式,将形如 `latlng(lat,lng)` 的字符串批量解析为标准二维数值数组,避免手动字符串切割与循环拼接,大幅提升代码可读性与执行效率。
在地理信息系统(GIS)或地图开发中,常会遇到以 LatLng(46.20467, 13.34764) 格式连续拼接的坐标字符串。若需将其转为标准二维数组(如 [[lat1, lng1], [lat2, lng2], ...]),传统方案(如逐字符查找、substr 截取、多次 replace 和手动循环)不仅冗长易错,且性能较差,还存在浮点数精度和空格处理等隐患。
更优解是利用字符串模板 + JSON.parse() —— 将原始字符串“重写”为合法 JSON 数组格式后直接解析。核心思路:
- 将每个 LatLng( 替换为 [;
- 将每个 ) 替换为 ];
- 用方括号包裹整个字符串,构成合法 JSON 数组字面量;
- 调用 JSON.parse() 一次性完成结构化解析。
✅ 示例代码如下:
const original = "LatLng(46.20467, 13.34764),LatLng(46.20467, 13.34767),LatLng(46.20467, 13.34772)";
// 一步构造合法 JSON 字符串并解析
const LatLong_completo = JSON.parse(
'[' +
original
.replaceAll('LatLng(', '[')
.replaceAll(')', ']') +
']'
);
console.log(LatLong_completo);
// 输出:[[46.20467, 13.34764], [46.20467, 13.34767], [46.20467, 13.34772]]⚠️ 注意事项:
立即学习“Java免费学习笔记(深入)”;
- replaceAll() 需要现代浏览器或 Node.js ≥ 15.0 支持;若需兼容旧环境,可用 split().join() 替代:
original.split('LatLng(').join('[').split(')').join(']') - 确保原始字符串中无非法字符(如未闭合括号、嵌套括号、引号等),否则 JSON.parse() 会抛出语法错误;建议增加 try...catch 做健壮性处理:
try { const result = JSON.parse('[...]'); return result; } catch (e) { throw new Error(`无效的 LatLng 字符串格式: ${e.message}`); } - 所有数值将自动被解析为 number 类型,无需额外 Number() 转换,语义清晰且精度保留完整。
该方案时间复杂度为 O(n),远优于原循环方案的 O(n²) 字符扫描;代码行数减少 80% 以上,逻辑一目了然,是处理此类结构化字符串的推荐实践。


















