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