• lua基础之字符串


    string.byte(s,[i],[j])

    返回字符 s[i], s[i+1], …, s[j] 的内部数字代码。 i 的默认值为 1; j 的默认值为 i。 请注意,数字代码不一定可以跨平台移植。


    string.char(…)

    接收零个或多个整数。 返回一个长度等于参数个数的字符串,其中每个字符的内部数字代码等于其对应的参数。 请注意,数字代码不一定可以跨平台移植。


    string.dump(function)

    返回包含给定函数的二进制表示的字符串,以便稍后对该字符串的加载字符串返回该函数的副本。 function 必须是没有上值的 Lua 函数。


    string.find(s,pattern,[init],[plain])

    在字符串 s 中查找 pattern 的第一个匹配项。 如果找到匹配项,则 find 返回 s 的索引,其中该事件开始和结束; 否则,它返回零。 第三个可选的数字参数 init 指定从哪里开始搜索; 它的默认值为 1,可以为负数。 作为第四个可选参数 plain 的值为 true 会关闭模式匹配功能,因此该函数执行简单的“查找子字符串”操作,模式中的任何字符都不会被视为“魔术”。 请注意,如果给出了 plain,则还必须给出 init。 如果模式有捕获,则在成功匹配时,捕获的值也会在两个索引之后返回。


    string.format(formatstring,…)

    根据第一个参数(必须是字符串)中给出的描述,返回其可变数量参数的格式化版本。 格式字符串遵循与标准 C 函数的 printf 系列相同的规则。 唯一的区别是选项/修饰符 *、l、L、n、p 和 h 不受支持,并且有一个额外的选项 q。 q 选项将字符串格式化为适合 Lua 解释器安全读回的形式:字符串写在双引号之间,并且字符串中的所有双引号、换行符、嵌入的零和反斜杠在写入时都被正确转义。


    string.gmatch(s,pattern)

    返回一个迭代器函数,每次调用它时,都会返回字符串 s 上模式的下一个捕获。 如果 pattern 没有指定捕获,那么每次调用都会产生整个匹配。 例如

    s = "hello world from Lua"
    for w in string.gmatch(s, "%a+") do
      print(w)
    end
    
    • 1
    • 2
    • 3
    • 4

    将遍历字符串 s 中的所有单词,每行打印一个。 下一个示例将给定字符串中的所有键=值对收集到一个表中:

    t = {}
    s = "from=world, to=Lua"
    for k, v in string.gmatch(s, "(%w+)=(%w+)") do
      t[k] = v
    end
    
    • 1
    • 2
    • 3
    • 4
    • 5

    string.gsub(s,pattern,repl,[n])

    返回 s 的副本,其中模式的所有出现(或前 n 次,如果给定)已被 repl 指定的替换字符串替换,该替换字符串可以是字符串、表或函数。 gsub 还返回发生的匹配总数作为其第二个值。如果 repl 是一个字符串,那么它的值用于替换。字符 % 用作转义字符:repl 中形式为 %n 的任何序列,其中 n 介于 1 和 9 之间,代表第 n 个捕获的子字符串的值(见下文)。序列 %0 代表整个匹配。 %% 序列代表单个 %。如果 repl 是一个表,则每次匹配都会查询该表,使用第一个捕获作为键;如果模式指定没有捕获,则整个匹配用作键。如果 repl 是一个函数,那么每次匹配发生时都会调用这个函数,所有捕获的子字符串作为参数按顺序传递;如果模式指定没有捕获,则整个匹配作为唯一参数传递。如果表查询或函数调用返回的值是字符串或数字,则将其用作替换字符串;否则,如果为 false 或 nil,则没有替换(即原始匹配保留在字符串中)。这里有些例子:

    x = string.gsub("hello world", "(%w+)", "%1 %1")
    --> x="hello hello world world"
    
    x = string.gsub("hello world", "%w+", "%0 %0", 1)
    --> x="hello hello world"
    
    x = string.gsub("hello world from Lua", "(%w+)%s*(%w+)", "%2 %1")
    --> x="world hello Lua from"
    
    x = string.gsub("home = $HOME, user = $USER", "%$(%w+)", os.getenv)
    --> x="home = /home/roberto, user = roberto"
    
    x = string.gsub("4+5 = $return 4+5$", "%$(.-)%$", function (s)
          return loadstring(s)()
        end)
    --> x="4+5 = 9"
    
    local t = {name="lua", version="5.1"}
    x = string.gsub("$name-$version.tar.gz", "%$(%w+)", t)
    --> x="lua-5.1.tar.gz"
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20

    string.len()

    接收一个字符串并返回它的长度。 空字符串 “” 的长度为 0。计算嵌入的零,因此 “a\000bc\000” 的长度为 5。


    string.lower(s)

    接收一个字符串并返回该字符串的副本,其中所有大写字母都更改为小写字母。 所有其他字符保持不变。 大写字母的定义取决于当前的语言环境。


    string.match(s,pattern,[init])

    在字符串 s 中查找 pattern 的第一个匹配项。 如果找到一个,则 match 返回模式中的捕获; 否则它返回零。 如果模式指定没有捕获,则返回整个匹配。 第三个可选的数字参数 init 指定从哪里开始搜索; 它的默认值为 1,可以为负数。


    string.rep(s,n)

    返回一个字符串,该字符串是字符串 s 的 n 个副本的串联。


    string.reverse(s)

    返回字符串 s 反转后的字符串。


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

    返回 s 中从 i 开始到 j 的子串; i 和 j 可以是负数。 如果 j 不存在,则假定它等于 -1(与字符串长度相同)。 特别地,调用 string.sub(s,1,j) 返回长度为 j 的 s 的前缀,而 string.sub(s, -i) 返回长度为 i 的 s 的后缀。


    string.upper(s)

    接收一个字符串并返回该字符串的副本,其中所有小写字母都更改为大写字母。 所有其他字符保持不变。 小写字母的定义取决于当前的语言环境。

  • 相关阅读:
    从零学算法50
    模型机微程序控制器
    什么是算子?
    二叉树的深度
    [附源码]java毕业设计基于技术的新电商助农平台
    07 【Sass语法介绍-控制指令】
    【模电】高低边驱动
    数据结构基础知识回顾
    【JavaWeb的从0到1的构建知识体系(四)】认识Mybatis(上)
    FIddler抓手机的通讯包的设置记录
  • 原文地址:https://blog.csdn.net/a_codecat/article/details/127950925