news 2026/4/23 0:20:16

Lua 的 String(字符串) 模块

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Lua 的 String(字符串) 模块

Lua 的 String 模块 提供了强大的字符串处理功能,主要通过 string 模块实现。以下是 Lua string 模块的主要功能和用法:

基础字符串操作

  1. 字符串连接

    • 使用..操作符连接字符串
    localstr="Hello".." ".."World"-- 结果为 "Hello World"
  2. 字符串长度

    • 使用#操作符获取字符串长度
    locallen=#"Lua"-- 结果为 3

常用字符串函数

  1. string.sub(s, i [, j])

    • 截取字符串 s 从位置 i 到 j 的子串
    • 示例:
    locals="Programming"print(string.sub(s,4,7))-- 输出 "gram"
  2. string.find(s, pattern [, init [, plain]])

    • 在字符串 s 中查找匹配 pattern 的位置
    • 示例:
    localstart,finish=string.find("Hello Lua","Lua")-- start=7, finish=9
  3. string.match(s, pattern [, init])

    • 返回字符串 s 中匹配 pattern 的第一个子串
    • 示例:
    localword=string.match("Lua is great","%a+")-- 返回 "Lua"
  4. string.gsub(s, pattern, repl [, n])

    • 全局替换字符串中的匹配项
    • 示例:
    locals=string.gsub("Lua Lua Lua","Lua","Python",2)-- 结果为 "Python Python Lua"

字符串格式化

  1. string.format(formatstring, ...)
    • 类似 C 的 printf 格式化输出
    • 示例:
    localformatted=string.format("Value: %.2f",3.14159)-- 结果为 "Value: 3.14"

字符串转换

  1. string.upper(s)

    • 将字符串转换为大写
    print(string.upper("lua"))-- 输出 "LUA"
  2. string.lower(s)

    • 将字符串转换为小写
    print(string.lower("LUA"))-- 输出 "lua"

字符串模式匹配(正则表达式)

Lua 提供了轻量级的模式匹配功能:

  1. 字符类

    • %a: 字母
    • %d: 数字
    • %s: 空白字符
    • %w: 字母数字
  2. 模式修饰符

    • +: 1次或多次
    • *: 0次或多次
    • -: 最小匹配
    • ?: 0或1次

示例:

localdate="2023-05-15"localyear,month,day=string.match(date,"(%d+)-(%d+)-(%d+)")-- year="2023", month="05", day="15"

字符串缓冲区

对于大量字符串拼接,可以使用表作为缓冲区:

localbuf={}fori=1,100dobuf[#buf+1]="line "..iendlocalresult=table.concat(buf,"\n")

UTF-8 支持(Lua 5.3+)

Lua 5.3 及以上版本增加了 UTF-8 支持:

  • utf8.len(s): 获取 UTF-8 字符串长度
  • utf8.codepoint(s, i, j): 获取码点
  • utf8.char(...): 从码点创建字符串
locallen=utf8.len("你好")-- 结果为 2

Lua 的字符串处理功能强大而高效,是处理文本数据的理想选择。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/19 15:06:13

Java Web 中小企业设备管理系统系统源码-SpringBoot2+Vue3+MyBatis-Plus+MySQL8.0【含文档】

摘要 随着信息技术的快速发展,中小企业在设备管理方面面临着诸多挑战,传统的手工记录和纸质档案管理方式效率低下,难以满足现代化企业的需求。设备管理系统的数字化和智能化已成为提升企业管理效率的重要手段。中小企业亟需一套高效、稳定且易…

作者头像 李华
网站建设 2026/4/22 11:43:40

【无人机故障】基于遗传算法优化非奇异快速终端滑模控制器 (GANFTSMC),并结合RBF 径向基神经网络实现四旋翼无人机遭遇单臂结构(过程)故障及对应电机问题附matlab代码

✅作者简介:热爱科研的Matlab仿真开发者,擅长数据处理、建模仿真、程序设计、完整代码获取、论文复现及科研仿真。 🍎 往期回顾关注个人主页:Matlab科研工作室 👇 关注我领取海量matlab电子书和数学建模资料 &#…

作者头像 李华
网站建设 2026/4/19 17:05:50

Java毕设项目:基于vue濒危物种公益救助交流平台基于SpringBoot濒危物种公益救助交流平台(源码+文档,讲解、调试运行,定制等)

博主介绍:✌️码农一枚 ,专注于大学生项目实战开发、讲解和毕业🚢文撰写修改等。全栈领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围:&am…

作者头像 李华
网站建设 2026/4/19 17:07:22

【Linux】SSH 免密登录配置指南

管理服务器时,每次登录都要输密码,既麻烦又不安全。SSH 免密登录用密钥代替密码,配置一次,以后连接就不用再输密码了。这样不仅更安全,还能方便地做自动化任务、管理多台服务器。现在就一起开始,告别重复输…

作者头像 李华
网站建设 2026/4/22 9:08:04

基于django框架和python的的实验室机房预约管理系统的

目录实验室机房预约管理系统摘要关于博主开发技术路线相关技术介绍核心代码参考示例结论源码lw获取/同行可拿货,招校园代理 :文章底部获取博主联系方式!实验室机房预约管理系统摘要 该系统基于Django框架与Python语言开发,旨在实现高校或科研…

作者头像 李华
网站建设 2026/4/19 17:08:58

西门子 S7 - 200 SMART 与台达变频器 485 通讯实现触摸屏控制

西门子s7 200smart与台达变频器485通讯 目标:用触摸屏和西门子smart 控制变频器通讯 器件:西门子s7 200 smart PLC,台达VFD-M变频器,昆仑通态触摸屏(带以太网),中途可以加路由器 控制方式:触摸屏与plc以太网…

作者头像 李华