Lua中string.byte()的使用
原文链接
string.byte()##
- 原型:string.byte (s [, i [, j] ])
- 解释:函数返回字符
s[i], s[i+1], ···, s[j]
的内部数字编码(ASCII码),其中参数i
的默认值是1,而参数j
的默认值是i
。需要注意的是该函数在返回的数字编码在跨平台方面不一定是可移植的。
注1:在string.byte函数中,我们可以将参数 “i” 当作字符的起始位置,而参数 “j” 作为终止位置,依次得到每个字符的对应的ASCII码
注2:我们可以根据字符的ASCII码,了解字符字符的字节数量,从而判定该字符是否为汉字。详情请参照:获取字符长度
Usage##
- 首先新建一个文件将文件命名为bytetest.lua然后编写如下代码:
-- 首先定义一个字符串 local str = "012abcd" print("str = "..str) -- 使用常规方式 print("\nafter string.byte(str,1,4)") print(string.byte(str,1,4)) -- 使用另一种表现方式 print("\nafter str:byte(1,4)") print(str:byte(1,4)) -- 使用负数索引 print("\nafter str:byte(-2,-1)") print(str:byte(-2,-1)) -- 当参数i大于j时 print("\nafter str:byte(2,1)") print(str:byte(2, 1)) -- 当索引无效时 print("\nafter str:byte(2000,1000000)") print(str:byte(2000,1000000))
- 运行结果
总结#
- 首先需要注意的是这个字符串字处理库假想字符串都是单字节编码的。
- 在代码的示例中我们测试了这个函数的两种写法结果都是一样的。
- 通过结果可知使用负数来作为字符串中字符的索引也是没有问题的。
- 我们发现代码
str:byte(2, 1)
是没有结果的,原因是这个函数不能从后往前依次显示字符的ASCII码,不管是证书索引还是负数索引,需要满足参数i
要小于等于参数j
的值。 - 从最后一组测试可以看出当引用的索引在原字符串中不存在时,函数也是没有返回结果的
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· Docker 太简单,K8s 太复杂?w7panel 让容器管理更轻松!