Как преобразовать "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