
本文介绍一种简洁、健壮且高性能的方式,将形如 LatLng(lat, lng) 的字符串批量解析为标准二维数值数组,避免手动字符串切割和循环拼接,大幅提升可读性与执行效率。
本文介绍一种简洁、健壮且高性能的方式,将形如 `latlng(lat, lng)` 的字符串批量解析为标准二维数值数组,避免手动字符串切割和循环拼接,大幅提升可读性与执行效率。
在地理信息处理或地图开发中,常需将服务端返回的坐标字符串(如 LatLng(46.20467, 13.34764),LatLng(...))快速转为可用于 Leaflet、Mapbox 或原生 JS 计算的二维数组格式 [[lat, lng], [lat, lng], ...]。原始方案通过多次 replace 和手动 substr/slice 循环提取坐标,逻辑冗长、易出错,且未处理空格、异常格式等边界情况。
推荐采用「正则预处理 + JSON 解析」的声明式方案,核心思路是:将非标准格式字符串转化为合法 JSON 数组字符串,再交由 JSON.parse() 安全解析。该方法充分利用浏览器内置解析器的健壮性与性能优势,代码更简短、可维护性强,且天然支持数字自动转换。
✅ 推荐实现(ES6+):
在 Java 中初始化和管理阿里云 SDK客户端。包括单例模式、线程安全、endpoint 与 region 配置、VPC 终端节点、同步与异步等。
const original = "LatLng(46.20467, 13.34764),LatLng(46.20467, 13.34767),LatLng(46.20467, 13.34772)";
// 步骤1:全局替换 LatLng( → [,) → ],并包裹成 JSON 数组格式
const jsonStr = '[' +
original
.replaceAll('LatLng(', '[')
.replaceAll(')', ']') +
']';
// 步骤2:安全解析(自动转为数字)
const latLngArray = JSON.parse(jsonStr);
console.log(latLngArray);
// 输出:[[46.20467, 13.34764], [46.20467, 13.34767], [46.20467, 13.34772]]⚠️ 注意事项:
立即学习“Java免费学习笔记(深入)”;
- replaceAll() 在旧版浏览器(如 IE)中不支持,若需兼容,可用 replace(/LatLng\(/g, '[').replace(/\)/g, ']') 替代;
- 字符串中若含多余空格(如 LatLng( 46.20467 , 13.34764 )),JSON.parse() 仍能正确解析(JSON 规范允许数值前后存在空白);
- 若输入不可信(如含恶意脚本或非法字符),切勿使用 eval();JSON.parse() 是安全替代,仅解析严格 JSON 格式;
- 如需强类型校验(例如确保每项为长度为 2 的数字数组),可在解析后添加验证逻辑:
const isValidPair = (item) => Array.isArray(item) && item.length === 2 && typeof item[0] === 'number' && typeof item[1] === 'number'; const validArray = latLngArray.filter(isValidPair);
总结:相比手动字符串操作,此方案以更少代码、更高可靠性完成转换,符合现代 JavaScript 的函数式与声明式编程理念,推荐作为地理坐标字符串解析的标准实践。

















