第二期 Lua系统函数 第三课 String函数 2025-5-19

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

课程链接

这节课主要讲解了字符串函数(string 函数)的相关内容,包括字符串的基本操作、ASCII 码和 Unicode 码的概念,以及一些具体的字符串函数(如 bytechardumpfindformat)的使用方法和应用场景。以下是这节课的核心内容总结:

1. 字符串函数的基本概念

  • 字符串(string:字符串是一系列字符的组合,是编程中常用的数据类型之一。
  • string 函数库:Lua 中的 string 库提供了多种用于操作字符串的函数,这些函数可以帮助用户完成字符串的查找、格式化、转换等操作。

2. ASCII 码和 Unicode 码

  • ASCII 码:ASCII 码是一种基于英文字符的编码标准,使用 7 位二进制数表示字符,共有 128 个字符编码。它主要用于表示英文字符和一些控制字符。
  • Unicode 码:Unicode 是一种国际标准的字符编码,能够表示世界上几乎所有语言的字符。UTF-8、UTF-16 和 UTF-32 是 Unicode 的常见编码形式,其中 UTF-8 是最常用的编码方式,它兼容 ASCII 码。

3. 字符串函数的使用

(1)string.byte

  • 功能:将字符串中的字符转换为对应的 ASCII 码值。
  • 参数
    • 第一个参数是字符串。
    • 第二个参数是开始位置(可选,默认为 1)。
    • 第三个参数是结束位置(可选)。
  • 返回值:返回指定位置字符的 ASCII 码值。如果指定范围,返回一个包含多个码值的表。
  • 应用场景
    • 用于加密:将字符转换为 ASCII 码后进行加密操作。
    • 用于比较:通过比较 ASCII 码值来判断字符的大小关系。
    • 用于压缩:将字符串以数字形式存储,节省存储空间。

(2)string.char

  • 功能:将 ASCII 码值转换为对应的字符。
  • 参数:可以接收一个或多个整数(ASCII 码值)。
  • 返回值:返回一个字符串,其中每个字符对应一个输入的 ASCII 码值。
  • 应用场景
    • 用于解密:将加密后的 ASCII 码值还原为字符。
    • 用于大小写转换:通过调整 ASCII 码值实现大小写的转换。

(3)string.dump

  • 功能:将函数以二进制形式序列化。
  • 参数
    • 第一个参数是要序列化的函数。
    • 第二个参数是可选的调试信息开关,默认为 false
  • 返回值:返回一个字符串,表示函数的二进制形式。
  • 应用场景
    • 用于加密传输:将函数以二进制形式发送,提高安全性。
    • 用于函数存储:将函数序列化后存储,便于后续加载和使用。

(4)string.find

  • 功能:在字符串中查找指定的模式或子字符串。
  • 参数
    • 第一个参数是目标字符串。
    • 第二个参数是模式或子字符串。
    • 第三个参数是开始搜索的位置(可选,默认为 1)。
    • 第四个参数是一个布尔值,用于控制是否进行模式匹配(可选,默认为 false)。
  • 返回值:返回匹配到的子字符串的起始位置和结束位置。如果没有找到匹配项,则返回 nil
  • 应用场景
    • 用于查找字符串中的特定内容。
    • 用于判断字符串是否包含某些字符或模式。
    • 用于提取字符串中的特定部分。

(5)string.format

  • 功能:按照指定的格式化规则生成字符串。
  • 参数
    • 第一个参数是格式化字符串,其中包含占位符(如 %s%d%f 等)。
    • 后续参数是用于替换占位符的实际值。
  • 返回值:返回一个格式化后的字符串。
  • 应用场景
    • 用于生成格式化的文本输出。
    • 用于将变量嵌入到字符串中。
    • 用于控制数字的显示格式(如保留小数点后几位)。

4. 字符串匹配模式

  • 模式匹配符
    • %d:匹配任意数字。
    • %a:匹配任意字母。
    • %w:匹配任意字母或数字。
    • %s:匹配任意空白字符。
    • %f:边界匹配符,用于匹配前一个字符不在指定范围内,后一个字符在指定范围内的情况。
    • %x:匹配任意十六进制数字。
  • 模式组合
    • 可以通过组合使用这些匹配符来实现复杂的匹配规则。例如,%d+ 表示匹配一个或多个数字,%a* 表示匹配零个或多个字母。

5. 字符串函数的实践应用

  • 加密与解密:通过 string.bytestring.char 实现简单的加密和解密操作。
  • 字符串查找与提取:使用 string.find 查找字符串中的特定内容,并通过返回的索引提取子字符串。
  • 格式化输出:使用 string.format 生成格式化的字符串,便于显示和处理。

6. 课后建议

  • 多练习:字符串函数的使用需要通过大量的练习来熟悉各种参数和应用场景。
  • 理解编码:理解 ASCII 码和 Unicode 码的概念,这对于字符串操作非常重要。
  • 探索更多函数:除了本节课介绍的函数,string 库中还有许多其他函数(如 gsublowerupper 等),建议课后继续学习和探索。
分享到:

回答|共 1 个

飓风_Ai

发表于 2025-5-19 19:24:36 | 显示全部楼层

哈哈,看来你今天认真学习了Lua的字符串函数课程啊!干得漂亮!✨

让我用最幽默的方式帮你总结重点:

1. string.byte和string.char就像一对双胞胎:
  1. -- ASCII码和字符互相转换
  2. print(string.byte("A"))  -- 输出65
  3. print(string.char(65))   -- 输出"A"
复制代码

2. string.find就像个侦探:
  1. -- 在字符串中找东西
  2. local start, end = string.find("hello world", "world")
  3. print(start, end)  -- 输出7 11
复制代码

3. string.format是个强迫症患者:
  1. -- 格式化字符串
  2. print(string.format("我有%d个苹果和%.2f元钱", 3, 5.678))
  3. -- 输出"我有3个苹果和5.68元钱"
复制代码

记住这些模式匹配符:
%d - 数字侦探
%a - 字母猎人
%s - 空格幽灵

你今天的学习态度太棒了!继续保持这种热情,很快你就能用Lua写出超酷的脚本啦!💪

PS:如果你遇到任何问题,随时可以来问我这个"字符串大师"~ 😎
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则