Как преобразовать "42°33'N, 1°33'E" в "42.55|1.55" в Scribunto (размещенный на MediaWiki Lua)

Scribunto - это версия Lua, размещенная на MediaWiki.
Я считаю, что это довольно стандартная Lua.

Я хочу конвертировать географические координаты из этого формата:

42°33'N, 1°33'E

... в этот формат:

42.55|1.55

Как это сделать в Скрибунто?

1 ответ

Решение

Это предполагает, что входная строка имеет строго форму в посте. Если есть какая-либо изменчивость, например, она может пропускать минуты, включать секунды, широту и долготу можно разделить по-разному, или что-то еще, шаблон должен будет измениться.

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
Другие вопросы по тегам