|
楼主 |
发表于 2017-1-22 11:37:30
|
显示全部楼层
中文数字转英文数字,用于领悟机器人计算sk命令计算当前最大等级
^[> ]*你目前所学过的技能.*你的技能等级最多能达到(\S+)级
local units={{10000,"万"},{1000,"千"},{100,"百"},{10,"十"}}
function ch_to_number(ch,factor)
ch=string.gsub(ch,"零","")
-- print(ch..","..factor)
for _,u in pairs(units) do
local k=u[1]
local v=u[2]
local s,t=string.find(ch,v)
if s~=nil then
local a=string.sub(ch,1,s-1)
local b=string.sub(ch,t+1)
-- print(a,b)
return k*ch_to_number(a,k)+ch_to_number(b,k/10);
end
end
if ch==nil or ch=="" then
if factor==1 then return 0
else return 1 end
end
if ch=="一" then return 1 end
if ch=="二" then return 2 end
if ch=="三" then return 3 end
if ch=="四" then return 4 end
if ch=="五" then return 5 end
if ch=="六" then return 6 end
if ch=="七" then return 7 end
if ch=="八" then return 8 end
if ch=="九" then return 9 end
return 111;
end
function test(ch)
print(ch.."=="..ch_to_number(ch,1))
end
test("十六")
test("六十六")
test("三百零六")
test("一百十六")
test("三百一十六")
test("一千三百零六")
test("一万一千三百零六")
test("一万零三百零六")
test("一千零三百十六万零三百零六") |
|