Lua tunumber函数

【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
 --]]
引用中的Lua脚本代码是一个用于限制登录失败次数并锁定账号的脚本。在这个脚本中,使用了Lua中的tonumber函数来将参数转换为数字。脚本中通过判断当前登录失败的次数和设置的限制次数来确定账号的状态。根据不同的情况,脚本会执行不同的操作,包括递增失败次数、设置过期时间以及返回相应的值来表示账号是否被锁定。 引用和引用中的代码也使用了Lua中的tonumber函数。这些代码实现了一个函数test,用于对给定的电话号码进行处理并返回结果。在这段代码中,tonumber函数被用于将字符串转换为数字。函数根据电话号码的长度、是否为特定的预留号码或特定的分机号码,来判断返回的结果是'800'还是空字符串。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [Redis - 利用lua脚本控制密码错误次数超限,锁定账号](https://blog.csdn.net/luan666/article/details/126249039)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 33.333333333333336%"] - *2* [lua tonumber](https://blog.csdn.net/weixin_30471065/article/details/96798075)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 33.333333333333336%"] - *3* [Lua tunumber函数](https://blog.csdn.net/auspark/article/details/102550638)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 33.333333333333336%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值