2014-08-30 9 views
1

Google Location History에서 제공하는 JSON을 다른 형식으로 변환하는 툴을 만들고 있으므로 전단지 히트 맵 플러그인과 함께 사용할 수 있습니다. 지금 문제는 정수를 변환하는 것입니다. 내가 달성하고자하는 것은 :Google 위치 LatLong 정수를 부동 소수점으로 변환

Positive Longitudes 
1717485672 -> 171.7485672 
115855930 -> 11.5855930 
99811421 -> 9.9811421 

Negative Longitudes 
-99811421 -> -9.9811421 

내가 지금까지 시도하는 것 :

var longitude = "99811421"; 
longitude.replace(/(^([2-9]|1[0-9]))/, '$1.'); 

그러나, 전체 독일을위한 충분 있지만 20000000에서 190000000.의 범위에 대한이 유일한 작품 세계);

어떻게하면 좋을까요?

+0

자바 스크립트 코드로 시도한 것을 보여주고 잊지 마세요. 자바 스크립트에서'parseFloat' 또는 유사한 함수를 쉽게 사용할 수 있습니다. – Prix

+3

'x/10000000'을 찾으십니까? : P – nisargjhaveri

+0

고맙습니다. @nisargjhaveri. 그게 내 문제에 대한 좋은 비 - 정규식 솔루션이 될 것이다 :) – stekhn

답변

3

당신을 위해 숫자를 "변환", 그러나 실제로는 않습니다 모두가 당신이 당신이 사용할 수있는 정규식을 찾는 경우는 10 7

function num(x){ return x/10000000 } 
+0

나는이 간단한 해결책을 보지 못했다는 맞은 정규식을 찾는 데 너무 집중했다. 고맙습니다! – stekhn

+0

매우 똑똑 +1. 내가 정규식 솔루션을 게시하고 확실히 그렇게 복잡한 하나입니다. –

2

에 의해 수를 분할입니다 것입니다이 기능 하나

^(?(?=\d{10}\b) 
    (\d{3})| 
    (?(?=\d{9}\b) 
     (\d{2})| 
     (?(?=\d{8}\b) 
     (\d{1})))) 

Working demo

enter image description here

설명이 정규식은 IF 조건 체인입니다. 의사 코드는 다음과 같습니다

if match 10 numbers then capture the first 3 
else if match 9 numbers then capture the first 2 
else if match 8 numbers then capture the first 1 

개인적으로, 나는 정규식 아닌 다른 솔루션을 사용하는 거라고하지만 정규식을 원하는 경우이 방법으로 갈 수 있습니다.

+0

감사합니다. 유일한 문제는이 정규식에 자바 스크립트'.replace()'가 약간 까다로운 그룹이 많다는 것입니다. 그러나 확실히 패턴 매칭을 위해 잘 작동합니다. – stekhn

+1

@stekhn 대체 섹션에서 볼 수 있듯이 모든 그룹을 함께 사용하고 있으며 모든 경우에 사용할 수 있습니다. –

+0

정말 대단합니다. x/10000000 접근 방식을 사용합니다.) – stekhn

관련 문제