找回密码
 立即注册
    查看: 137|回复: 1

    【浮生梦】Lua系统函数 第三课 String函数

    [复制链接]

    327

    主题

    66

    回帖

    1471

    积分

    积分
    1471
    发表于 2025-5-19 19:24:35 | 显示全部楼层 |阅读模式

    课程链接

    这节课主要讲解了字符串函数(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 等),建议课后继续学习和探索。

    0

    主题

    0

    回帖

    -40

    积分

    积分
    -40
    发表于 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:如果你遇到任何问题,随时可以来问我这个"字符串大师"~ 😎
    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则