• 企业400电话
  • 微网小程序
  • AI电话机器人
  • 电商代运营
  • 全 部 栏 目

    企业400电话 网络优化推广 AI电话机器人 呼叫中心 网站建设 商标✡知产 微网小程序 电商运营 彩铃•短信 增值拓展业务
    Lua字符串库(string库)学习笔记

    Lua 最强大的特性之一就是它的字符串处理能力,它支持字符格式化输出,具有可扩展的模式匹配查找功能,以及一些实用的字符操作,例如查询、截取、替换和删除等字符串操作,这些字符串操作函数都封装在一个名为 string 的模块里。

    Lua 里的字符索引是从 1 开始,索引值也可以是负数,这种情况将被解释成向后索引,从字符串末尾开始算起。

    下面是 Lua 5.2 提供的字符串操作函数:

    byte

    函数 string.byte 把字符串里的第 i 个字符转为 ASCII 编码,默认是输出第一个字符的编码(只有一个参数的话),用法:

    复制代码 代码如下:

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

    例子:

    复制代码 代码如下:

    print(string.byte("abc")) //echo:97

    print(string.byte("abc", 2))//echo:98

    char

    函数 string.char 是把一个 ASCII 编码转换为对应的字符,用法:

    复制代码 代码如下:

    string.char (asc1, ...)

    例子:

    复制代码 代码如下:

    print(string.char(97)) //echo a

    print(string.char(99, 100, 101)) //echo cde

    dump

    函数 string.dump 返回一个函数二进制形式的字符串,用法:

    复制代码 代码如下:

    string.dump (function)

    参数 function 是一个 Lua 函数:

    复制代码 代码如下:

    function test()
        print("just a test")
    end
    print(string.dump(test))

    函数 string.dump 实现了函数的序列化,函数可以很轻松的传递,并在其他作用域调用。函数 string.dump 出来的二进制字符串,可以用 load 函数反序列回来直接调用。

    复制代码 代码如下:

    function test()
        print("just a test")
    end
    local sd = string.dump(test)
    print(sd)
    local ls = load(sd)
    print(ls)
    ls()

    find

    函数 string.find 查找字符串 s 里第一个符合查找字符 pattern 的位置,用法:

    复制代码 代码如下:

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

    如果找到了目标字符 pattern,则返回它的开始和结束位置:

    复制代码 代码如下:

    start, end = string.find("just a test", "st")
    print(start, end)

    如果没有找到,则返回 nil:

    复制代码 代码如下:

    print(string.find("just a test", "dhq.me"))

    format

    函数 string.format 用于把字符串格式化输出,用法:

    复制代码 代码如下:

    string.format (formatstring, ···)

    string.format 函数的第一个参数是用来指定字符串的格式,例如:

    复制代码 代码如下:

    print(string.format("%s is %d", "ten", 10))

    上面例子里的 %s 表示字符串,%d 表示数字,它们是 Lua 的格式化输出符号。

    string.format 函数的用法跟 C 语言里的 printf 函数类似,例如它可以像 printf 那样输出指定位数的数字:

    复制代码 代码如下:

    Pi = 3.1415926
    print(string.format("Pi is %.2f", Pi))

    Lua 的字符格式化输出符号列表:

    复制代码 代码如下:

    .           所有字符
    %a          字母
    %c          控制符
    %d          数字
    %D          非数字
    %l          小写字母
    %p          标点符号
    %s          字符串
    %u          大写字母
    %w          字母数字
    %x          十六进制数
    %z          用 0 表示的字符

    gmatch

    函数 string.gmatch 会返回一个迭代函数,尅通过该函数遍历到一个字符串 s 中所有出现指定匹配模式 pattern 的地方,用法:

    复制代码 代码如下:

    string.gmatch (s, pattern)

    例如下面是找出字符串 s 里的所有单词:

    复制代码 代码如下:

    s = "just a test"
    for w in string.gmatch(s, "%a+") do
        print(w)
    end

    gsub

    函数 string.gsub 用于全局字符串替换,字符串 s 里满足匹配模式 pattern 格式的字符都会被替换成 repl 参数的值,用法:

    复制代码 代码如下:

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

    例如:

    复制代码 代码如下:

    print(string.gsub("just a test", "st", "*"))

    匹配模式 pattern 可以是一个正则:

    复制代码 代码如下:

    s = "num is 1234567890"
    print(string.gsub(s, "%d", "*"))

    可在函数的最后加上一个可选参数 n,表示指定要替换的次数:

    复制代码 代码如下:

    s = "sethook, setlocal, setmetatable, setupvalue, setuservalue"
    print(string.gsub(s, "s%a+", "S", 2))

    len

    函数 string.len 用于返回字符串 s 的长度,用法:

    复制代码 代码如下:

    string.len (s)

    例子:

    复制代码 代码如下:

    print(string.len("abcdefg"))

    lower

    函数 string.lower 用于把字符串 s 里的字母转为小写,用法:

    复制代码 代码如下:

    string.lower (s)

    例如:

    复制代码 代码如下:

    print(string.lower("AbCdEfG"))

    match

    函数 string.match 用于查找字符串 s 里第一个匹配对模式 pattern 的值,并返回匹配值,用法:

    复制代码 代码如下:

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

    上面参数 init 是可选, 表示查找过程的起点, 默认从 1 开始:

    复制代码 代码如下:

    print(string.match("just a test", "test"))

    参数 patter 可以是一个正则模式:

    复制代码 代码如下:

    t = "today is 2003-5-31"
    print(string.match(t, "%d+-%d+-%d+"))

    如果 pattern 为空,则返回整个字符串;如果没匹配成功,则返回 nil。

    复制代码 代码如下:

    print(string.match("abcdabcd", "a"))

    rep

    函数 string.rep 返回一个由分隔符 sep 隔开的重复(repeat)n 次字符 s 的字符串,用法:

    复制代码 代码如下:

    string.rep (s, n [, sep])

    默认的分隔符 sep 是空字符。

    复制代码 代码如下:

    print(string.rep("repeat", 3))

    reverse

    函数 string.reverse 用于倒转一个字符串 s 的排序,用法:

    复制代码 代码如下:

    string.reverse (s)

    例如:

    复制代码 代码如下:

    print(string.reverse("reverse"))

    sub

    函数 string.sub 用于从字符串 s 里截取一个从第 i 个字符到第 j 个字符间的子字符串,用法:

    复制代码 代码如下:

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

    例如:

    复制代码 代码如下:

    print(string.sub("abcdefg", 2, 5))

    参数 i 可以是负数,这种情况下,子串的位置从字符串 s 的最后开始算起:

    复制代码 代码如下:

    print(string.sub("abcdefg", -4, -2))

    参数 end 省略的话,则会返回从 i 到字符串末尾的子字符串:

    复制代码 代码如下:

    print(string.sub("abcdefg", 3))

    upper

    函数 string.upper 用于把字符串 s 里的字母转为大写,用法:

    复制代码 代码如下:

    string.upper (s)

    例如:

    复制代码 代码如下:

    print(string.upper("AbCdEfG"))

    您可能感兴趣的文章:
    • Lua中string.len()使用指南
    • Lua中的string库和强大的模式匹配学习笔记
    • Lua loadstring函数用法实例
    • Lua中的loadfile、dofile、loadstring、require用法实例
    • LUA string库使用小结
    • Lua中的string库(字符串函数库)总结
    • Lua中实现StringBuffer功能
    • Lua中字符串(string)浅析
    • Lua中string.lower()使用指南
    上一篇:LUA string库使用小结
    下一篇:Lua模块与包学习笔记
  • 相关文章
  • 

    © 2016-2020 巨人网络通讯 版权所有

    《增值电信业务经营许可证》 苏ICP备15040257号-8

    Lua字符串库(string库)学习笔记 Lua,字符串,库,string,学习,