Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 将Google Location LatLong整数转换为浮点_Javascript_Regex - Fatal编程技术网

Javascript 将Google Location LatLong整数转换为浮点

Javascript 将Google Location LatLong整数转换为浮点,javascript,regex,Javascript,Regex,我正在开发一个工具,将Google Location History提供的JSON转换为不同的格式,这样我就可以将它与传单热图插件一起使用。现在的问题是转换整数。我想要实现的是: Positive Longitudes 1717485672 -> 171.7485672 115855930 -> 11.5855930 99811421 -> 9.9811421 Negative Longitudes -99811421 -> -9.9811421 到目前为止,

我正在开发一个工具,将Google Location History提供的JSON转换为不同的格式,这样我就可以将它与传单热图插件一起使用。现在的问题是转换整数。我想要实现的是:

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之间的范围。这对德国来说已经足够了,但对整个世界来说还不够;)

你知道怎么做吗?

这个函数将为你“转换”数字,但实际上它所做的只是将数字除以107

此函数将为您“转换”数字,但实际上它所做的只是将数字除以107


如果您正在寻找正则表达式,可以使用此正则表达式:

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

作为一种解释,这个正则表达式是一系列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

就个人而言,我会使用除正则表达式之外的另一种解决方案,但如果您想要正则表达式,可以使用这种方法。

如果您正在寻找正则表达式,可以使用以下方法:

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

作为一种解释,这个正则表达式是一系列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


就我个人而言,我会使用除正则表达式之外的另一种解决方案,但如果你想要正则表达式,你可以使用这种方法。

向我们展示你用JavaScript代码做过的尝试,也不要忘记,你可以很容易地从JavaScript中使用
parseFloat
或类似的函数。你在寻找
x/10000000
?:p谢谢你@nisargjhaveri。对于我的问题,这将是一个很好的非正则表达式解决方案:)向我们展示您用JavaScript代码尝试过的内容,也不要忘记,您可以轻松使用JavaScript中的
parseFloat
或类似函数。您正在寻找
x/10000000
p谢谢你@nisargjhaveri。对于我的问题,这将是一个很好的非正则表达式解决方案:)我太专注于寻找正确的正则表达式,以至于我没有看到这个简单的解决方案。非常感谢。非常聪明+1。我发布了正则表达式解决方案,这肯定是一个非常复杂的解决方案。我太专注于找到合适的正则表达式,以至于我没有看到这个简单的解决方案。非常感谢。非常聪明+1。我发布了regex解决方案,这肯定是一个非常复杂的解决方案。谢谢!唯一的问题是这个正则表达式有很多组,这使得JavaScript
.replace()
有点棘手。但它在模式匹配方面确实很好。@stekhn,正如您在替换部分中看到的,我将所有的组一起使用,并适用于所有情况。这非常棒,我想我将采用x/10000000方法;)@Fede这与使用正则表达式解析HTML大致相同。这是可能的,但有更好的方法;)@我完全同意。嗯,但我喜欢发布正则表达式解决方案。我知道很多时候regex不是一个选项,但我喜欢用regex思考解决方案,这就像一个书呆子的爱好。问题是有时社区会发疯,谢谢!唯一的问题是这个正则表达式有很多组,这使得JavaScript
.replace()
有点棘手。但它在模式匹配方面确实很好。@stekhn,正如您在替换部分中看到的,我将所有的组一起使用,并适用于所有情况。这非常棒,我想我将采用x/10000000方法;)@Fede这与使用正则表达式解析HTML大致相同。这是可能的,但有更好的方法;)@我完全同意。嗯,但我喜欢发布正则表达式解决方案。我知道很多时候regex不是一个选项,但我喜欢使用regex思考解决方案,这就像一个书呆子的爱好。问题是,有时社区会发疯,哈哈