2

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

这是为了更容易从谷歌复制和粘贴。问题是有时字符串就像 39,43433,-7,2232。

我怎样才能用 javascript / Jquery 在这个 39.43433,-7.2232 上转换这个字符串 39,43433,-7,2232。

我们必须记住,我们不知道逗号开头和结尾有多少数字。

4

5 回答 5

1

好吧,你知道有一个或三个逗号。

如果有 3 个,则:

string = "39,43433,-7,2232"
parts = string.split(",")
fixedString = parts[0]+"."+parts[1]+","+parts[2]+"."+parts[3]

将完成这项工作。

于 2012-07-13T09:22:11.627 回答
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(',')

注意,您必须为不支持 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;
  };
}
于 2012-07-13T09:28:56.820 回答
0

您可以使用“g”标志将 replace() 与 RegExps 一起使用。

于 2012-07-13T09:22:14.313 回答
0

用点替换每个第一个昏迷。通过留下每隔一个逗号,您将确保单独留下分隔逗号。此外,这可能仅在您有1,111,2,222和没有的情况下才有效1.111,2.222。还是你懂的。。

于 2012-07-13T09:24:07.833 回答
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"]
于 2012-07-13T09:26:00.167 回答