1

Scribunto是 MediaWiki 托管的 Lua 版本。
我相信这是相当标准的 Lua。

我想从这种格式转换地理坐标:

42°33'N, 1°33'E

...到这种格式:

42.55|1.55

如何在 Scribunto 中做到这一点?

4

1 回答 1

2

这假设输入字符串严格遵循帖子中的格式。如果有任何可变性,例如它可以省略分钟,包括秒,纬度和经度可以不同地分开,或者其他什么,模式将需要改变。

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-28T11:32:55.290 回答