将点更改为逗号

时间:2012-07-13 09:17:38

标签: jquery latitude-longitude

我有一个存储纬度和经度的应用程序,如39.43433,-7.2232

这样可以更轻松地从谷歌复制和粘贴。问题是有时字符串就像39,43433,-7,2232。

如何使用javascript / Jquery在此39.43433,-7.2232上转换此字符串39,43433,-7,2232。

我们记得我们不知道在逗号和逗号末尾有多少数字。

5 个答案:

答案 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;
  };
}