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

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

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



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"



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)

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