JavaScript分割字符串保留分割字符:经纬度字符串处理咨询
解决经纬度字符串分割时保留N/S的问题
方法一:使用正向零宽断言分割
原split正则会把N/S作为分隔符丢弃,改用正向零宽断言可以在N/S后方执行分割,同时将N/S保留在前半段内容中:
const rPoint = "2154S15002E"; const rp = rPoint.split(/(?<=[NS])/); // 输出结果: ["2154S", "15002E"] const rPoint2 = "215422N1500232E"; const rp2 = rPoint2.split(/(?<=[NS])/); // 输出结果: ["215422N", "1500232E"]
正则(?<=[NS])的作用是:匹配一个位置,该位置的前一个字符是N或S,分割操作在此位置执行但不会消耗N/S字符,因此能保留在前面的数组元素里。
方法二:直接匹配提取目标片段(更直观)
如果不需要分割逻辑,直接提取经纬度的两个组成部分,用正则分组匹配会更直接可靠:
const regex = /(\d+[NS])(\d+[EW])/; const match1 = "2154S15002E".match(regex); const result1 = match1.slice(1); // ["2154S", "15002E"] const match2 = "215422N1500232E".match(regex); const result2 = match2.slice(1); // ["215422N", "1500232E"]
这个正则的逻辑是:
(\d+[NS]):匹配1个及以上数字,后跟N或S,作为第一个分组(纬度部分)(\d+[EW]):匹配1个及以上数字,后跟E或W,作为第二个分组(经度部分)
匹配完成后,从结果中截取分组内容即可得到目标数组。
内容的提问来源于stack exchange,提问作者tj26
相关产品推荐
相关产品推荐

