我有一个存储纬度和经度的应用程序,如39.43433,-7.2232
这样可以更轻松地从谷歌复制和粘贴。问题是有时字符串就像39,43433,-7,2232。
如何使用javascript / Jquery在此39.43433,-7.2232上转换此字符串39,43433,-7,2232。
我们记得我们不知道在逗号和逗号末尾有多少数字。
答案 0 :(得分:1)
嗯,你知道有一个或三个逗号。
如果有3,那么:
string = "39,43433,-7,2232"
parts = string.split(",")
fixedString = parts[0]+"."+parts[1]+","+parts[2]+"."+parts[3]
将完成这项工作。
答案 1 :(得分:0)
您可以使用“g”标志将replace()与RegExps一起使用。
答案 2 :(得分:0)
用点替换每个第一个昏迷。通过单独留下每一秒逗号,您将确保单独留下分隔符号。此外,只有当您有1,111,2,222
而非1.111,2.222
时,此功能才有效。你还是明白了......
答案 3 :(得分:0)
var str = '39,43433,-7,2232';
var patt = new RegExp("([-]?\\d+)\,([-]?\\d+)", "g");
var x = str.match(patt);
console.log(x);
// ["39,43433", "-7,2232"]
答案 4 :(得分:0)
简单,使用正则表达式组:
var string = "39,43433,-7,2232"
string.replace(/([-\d]+),(\d+)(,)([-\d]+),(\d+)/g, "$1" + '.' + "$2$3$4" + '.' + "$5")
这是使用组来进行字符串的重新协调,并且比字符串拆分和数组连接更快。但是如果你更像是面向对象的那种人,你可以用ECMA-Script 5更简单,更易读:
string.match(/(-?\d+)\,(-?\d+)/g).
map(function(e) { return e.replace(/,/, '.'); }).
join(',')
注意,您必须为map的浏览器安装do not have support for ECMA Script 5才能保持跨浏览器兼容性。您可以通过将其添加到代码
来实现if (!('map' in Array.prototype)) {
Array.prototype.map= function(mapper, that /*opt*/) {
var other= new Array(this.length);
for (var i= 0, n= this.length; i<n; i++)
if (i in this)
other[i]= mapper.call(that, this[i], i, this);
return other;
};
}