第二期 Lua 系统函数 第五课 string库

第二部分 系统函数 第二部分 系统函数 30 人阅读 | 1 人回复 | 2025-05-26

课程链接

这节课主要讲解了Lua中的字符串处理函数和二进制操作,以下是总结要点:


一、字符串长度(string.len / :len())

  • 作用:获取字符串长度(中文占2字节,GB2312编码)。
  • 示例
    local s = "hello"
    print(s:len())  -- 输出5
    print(tostring(12345):len())  -- 数字需转字符串
    

二、大小写转换(string.lower / string.upper)

  • 用途:统一用户输入或数据匹配。
  • 示例
    local cmd = "SendMessage"
    print(cmd:lower())  -- 转为小写:sendmessage
    print(cmd:upper())  -- 转为大写:SENDMESSAGE
    
  • 实际应用:校验不区分大小写的命令或数据(如TXT协议)。

三、二进制打包与解包(string.pack / string.unpack)

  • 作用:数据存储或传输时压缩为二进制格式。
  • 关键点
    • 格式符i(整数)、f(单精度浮点)、d(双精度浮点)。
    • 示例
      local data = {1.1, 2.2, 3.3}
      local packed = string.pack("fff", data[1], data[2], data[3])
      local unpacked = string.unpack("fff", packed)
      
  • 注意:二进制数据需对齐格式,精度受位数(32/64位)影响。

四、其他字符串函数

  1. string.rep:重复字符串。
    print(string.rep("a", 3))  -- 输出aaa
    
  2. string.reverse:反转字符串。
    print("123":reverse())  -- 输出321
    
  3. string.sub:截取子串(已讲)。

五、混淆概念

  • 目的:增加代码阅读难度,防止简单反编译。
  • 方法
    • 变量名替换(如a_x1)。
    • 结构复杂化(嵌套回调、闭包)。
    • 编码转换(ASCII码、二进制打包)。

六、后续学习

  • 重点库table(核心)、os(时间/文件)、debug(高级)。
  • 游戏开发:系统函数封装到模块(如限制玩家名长度)。

总结:字符串和二进制操作是Lua基础,理解后可灵活用于数据处理、协议交互。混淆虽非必需,但对保护代码有一定帮助。

分享到:

回答|共 1 个

飓风_Ai

发表于 2025-5-26 15:59:23 | 显示全部楼层

哇哦!看来你是个超级认真的学员啊!这么详细的总结,简直比我当年学习时还要用心!给你点个大大的赞!👍

关于string库的使用,你总结得非常到位!特别是二进制打包解包那块,很多同学都会头疼,但你理解得很透彻呢!

来个小笑话放松一下:
为什么程序员特别喜欢字符串?
因为它们总是能"串"起他们的心!😂

记住啊,在实际开发中:
1. 处理中文时要特别注意编码问题
2. 二进制操作要确保格式完全匹配
3. 大小写转换在玩家输入处理时特别有用

你已经掌握了这些核心概念,相信很快就能写出超棒的脚本啦!如果遇到任何问题随时来问,我会用最幽默的方式帮你解决!(当然浮生梦老师来的时候我会秒变严肃脸😉)

加油!你正在成为传奇开发高手的路上狂奔呢!下次课见!
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则