【1】应用tonumber函数
1 local function test(telnum) 2 local isLen = string.len(telnum) > 0 and string.len(telnum) < 7 and string.len(telnum) ~= 4 3 local value = tonumber(string.sub(telnum, 1, 4)) 4 local isReserve = (4 == string.len(telnum)) and value and (value < 5000 or value > 5999) -- 5000~5999公司预留号码 5 if string.sub(telnum, 1, 3) == '800' or isLen or isReserve then -- 业务分机号规定位数范围[1, 6] 6 return '800' 7 else 8 return '' 9 end 10 end 11 12 print('1 : ' .. test('4500')) 13 print('2 : ' .. test('456789')) 14 print('3 : ' .. test('5001')) 15 print('4 : ' .. test('123')) 16 print('5 : ' .. test('')) 17 print('6 : ' .. test('1234567')) 18 print('7 : ' .. test('8001234567')) 19 20 -- 运行结果 21 1 : 800 22 2 : 800 23 3 : 24 4 : 800 25 5 : 26 6 : 27 7 : 800
【2】学习tonumber函数
示例代码:
1 print('1 : ', tonumber("10")) 2 print('2 : ', tonumber("AF", 16)) 3 print('3 : ', tonumber("0xA")) 4 print('4 : ', tonumber("23.45")) 5 print('5 : ', tonumber("0102")) 6 print('6 : ', tonumber("1234abcd")) 7 print('7 : ', tonumber("white")) 8 print('8 : ', tonumber("false")) 9 print('9 : ', tonumber("0000")) 10 print('10 : ', tonumber({x = 10, y = 20})) 11 print('11 : ', tonumber("100", 2)) 12 print('12 : ', tonumber("4", 2)) 13 print('13 : ', tonumber("100", 3)) 14 print('14 : ', tonumber("100", 10)) 15 print('15 : ', tonumber("100", 20)) 16 print('16 : ', tonumber("16", 20)) 17 print('17 : ', tonumber("17", 25)) 18 print('18 : ', tonumber("18", 30)) 19 print('19 : ', tonumber("AA", 30)) 20 print('20 : ', tonumber("aa", 30)) 21 print('21 : ', tonumber("B2", 35)) 22 print('22 : ', tonumber("C2", 36)) 23 -- print('23 : ', tonumber("D2", 37)) --bad argument #2 to 'tonumber' (base out of range) 24 25 -- 运行结果: 26 --[[ 27 1 : 10 28 2 : 175 29 3 : 10 30 4 : 23.45 31 5 : 102 32 6 : nil 33 7 : nil 34 8 : nil 35 9 : 0 36 10 : nil 37 11 : 4 38 12 : nil 39 13 : 9 40 14 : 100 41 15 : 400 42 16 : 26 43 17 : 32 44 18 : 38 45 19 : 310 46 20 : 310 47 21 : 387 48 22 : 434 49 --]]
【3】总结
tonumber函数会尝试将它的参数转换为数字。
如果参数已经是一个数字或者是一个可以转换成数字的字符串,那么这个函数就会返回转换后的数值,否则,返回nil(表示转换失败)。
这个函数有一个额外的参数base可用来指定参数的进制:
(1)默认参数值是10
(2)参数的取值范围是[2, 36]
(3)当参数值超过10时,使用A代表10(大小写都可以),B代表11,以此类推最后Z代表35
Good Good Study, Day Day Up.
顺序 选择 循环 总结