Учитывая это (время-значение) Строка, как:ToNumber и регулярное выражение
local dt = "12:34:56"
Я хочу, чтобы вырезать эту строку в
hh, mm, ss = "12", "34", "56"
поэтому я использую регулярное выражение, как это:
local hh = string.format("%02d", tonumber(dt:gsub(":..:..","")))
local mm = string.format("%02d", tonumber(dt:gsub(":..:",""):gsub(":","")))
local ss = string.format("%02d", tonumber(dt:gsub("..:..:","")))
который отлично работает. (Временная строка исходит от userinput, поэтому я заполняю ее 0, если пользователь пишет «1» вместо «01»)
Но в тех случаях, когда значение начинается с 0, оно выходит за пределы диапазона для luas tonumber() (Подписанный нуль, я думаю), то же самое с «1», tonumber(), похоже, не обрабатывает значения ниже «2») Может ли кто-нибудь сказать мне, как справиться с этой ситуацией?
Кроме того, я был бы счастлив, если бы вы могли показать мне плохую практику в моем регулярном выражении, если есть некоторые.