如何用JavaScript将字符串中每隔一个逗号替换为空格?
问题分析
你写的正则/([0-9]+),\s([0-9]+),\s/g无效的原因有两个:
[0-9]+只能匹配纯整数,但你的输入是带小数点的浮点数,正则无法匹配到目标内容;- 你的输入里坐标对内部是
x,y(无空格),而正则要求匹配x, y(逗号后带空格)的结构,完全找不到匹配项,所以替换后内容和输入一致。
解决方案
根据你的输入格式(x,y , x,y , ...),推测你想把坐标对之间的,(空格+逗号+空格)改成, (逗号+空格),去掉逗号前的多余空格。可以用以下两种方式实现:
方式1:直接匹配多余空格
最简单的写法,直接匹配逗号前的一个或多个空格,替换成空:
const inputStr = ' 35.15560188441565,31.738399966331848 , 35.2517322555094,31.705440981956848 , 35.28057136683753,31.742519839378723 , 35.28743782191565,31.798824771019348 , 35.27507820277503,31.842770083519348 , 35.20504036097815,31.872982485863098 , 35.16521492152503,31.841396792503723 , 35.14049568324378,31.807064517113098 , 35.15560188441565,31.738399966331848 '; const outputStr = inputStr.replace(/\s+,/g, ', ');
方式2:精准匹配坐标对(更严谨)
如果需要确保只修改坐标对后面的分隔符,可以用正则捕获浮点数,避免误匹配其他内容:
const outputStr = inputStr.replace(/(\d+(?:\.\d+)?)\s+,/g, '$1, ');
其中\d+(?:\.\d+)?可以匹配整数或带小数点的浮点数,(?:...)是不捕获分组,只用于匹配结构。
效果验证
修改后的输出会变成:35.15560188441565,31.738399966331848, 35.2517322555094,31.705440981956848, 35.28057136683753,31.742519839378723, 35.28743782191565,31.798824771019348, 35.27507820277503,31.842770083519348, 35.20504036097815,31.872982485863098, 35.16521492152503,31.841396792503723, 35.14049568324378,31.807064517113098, 35.15560188441565,31.738399966331848
内容的提问来源于stack exchange,提问作者Boris K
相关产品推荐
相关产品推荐

