2

この 39.43433,-7.2232 のような緯度と経度を保存するアプリケーションがあります。

これは、Google からのコピー アンド ペーストを簡単にするためです。問題は、文字列が 39,43433,-7,2232 のようになる場合があることです。

javascript / Jqueryを使用して、この文字列39,43433、-7,2232をこの39.43433、-7.2232に変換するにはどうすればよいですか。

コンマの最初と最後にいくつの数字があるかわからないことを忘れないでください。

4

5 に答える 5

1

コンマが 1 つまたは 3 つあることがわかります。

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-Script5を使用するとさらに簡単で読みやすくなります。

string.match(/(-?\d+)\,(-?\d+)/g).
  map(function(e) { return e.replace(/,/, '.'); }).
  join(',')

注意:ブラウザー間の互換性を維持するには、ECMAScript5をサポートしていないブラウザー用にマップをインストールする必要があります。これをコードに追加することでそれを行うことができます

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
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 に答える
0

「g」フラグを使用して、replace() を RegExps で使用できます。

于 2012-07-13T09:22:14.313 に答える
0

1 つ目のコマをすべてドットに置き換えます。カンマを 1 秒おきに残すことで、区切りコンマが確実に残されるようになります。また、これはおそらく、持っている場合と持っ1,111,2,222ていない場合にのみ機能します1.111,2.222。それでもあなたはアイデアを得る..

于 2012-07-13T09:24:07.833 に答える