我有一个存储纬度和经度的应用程序,例如 39.43433,-7.2232
这是为了更容易从谷歌复制和粘贴。问题是有时字符串就像 39,43433,-7,2232。
我怎样才能用 javascript / Jquery 在这个 39.43433,-7.2232 上转换这个字符串 39,43433,-7,2232。
我们必须记住,我们不知道逗号开头和结尾有多少数字。
我有一个存储纬度和经度的应用程序,例如 39.43433,-7.2232
这是为了更容易从谷歌复制和粘贴。问题是有时字符串就像 39,43433,-7,2232。
我怎样才能用 javascript / Jquery 在这个 39.43433,-7.2232 上转换这个字符串 39,43433,-7,2232。
我们必须记住,我们不知道逗号开头和结尾有多少数字。
好吧,你知道有一个或三个逗号。
如果有 3 个,则:
string = "39,43433,-7,2232"
parts = string.split(",")
fixedString = parts[0]+"."+parts[1]+","+parts[2]+"."+parts[3]
将完成这项工作。
简单,使用正则表达式组:
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(',')
注意,您必须为不支持 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;
};
}
您可以使用“g”标志将 replace() 与 RegExps 一起使用。
用点替换每个第一个昏迷。通过留下每隔一个逗号,您将确保单独留下分隔逗号。此外,这可能仅在您有1,111,2,222
和没有的情况下才有效1.111,2.222
。还是你懂的。。
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"]