如何在Scribunto(MediaWiki托管的Lua)中将“42°33'N,1°33'E”转换为“42.55 | 1.55”。

Scribunto 是 Lua 的一个 MediaWiki 主机版本。

我相信它是相当标准的 Lua。

我想在 Scribunto 中将地理坐标从这种格式转换为:

42°33'N, 1°33'E

… 转换为这种格式:

42.55|1.55

如何在 Scribunto 中进行此操作?

点赞
用户2279620
用户2279620

这假设输入字符串严格按照帖子中的格式。如果有任何变化,例如可以省略分钟,包括秒,纬度和经度可以以不同的方式分隔,或者其他任何情况,模式都需要更改。

function translate_coords(str)
    assert(type(str)=="string")
    local patt = "(%d+)°(%d+)'([NS]), (%d+)°(%d+)'([WE])"
    local latd,latm,latdir,lngd,lngm,lngdir = string.match(str,patt)
    assert(latd and latm and latdir)
    assert(lngd and lngm and lngdir)
    latd = latdir=="S" and -latd or latd
    lngd = lngdir=="W" and -lngd or lngd
    return ""..(latd+latm/60).."|"..(lngd+lngm/60)

end
2013-08-28 11:32:55