string
string 命名空间包含与字符串相关的函数。
string.format
string.format 函数根据规范字符串格式化多个其他值,生成一个字符串。它类似于 C 语言中的 printf 函数,以及其他编程语言中的类似函数。
string.format(spec, values...)
示例
> string.format("Hello, %s!", "Ander")
"Hello, Ander!"
> string.format("There are %d lights", 4)
"There are 4 lights"
当您使用更复杂的格式规范时,string.format 函数最为有用。
规范语法
规范是一个字符串,包含以 % 字符开头的格式动词。函数调用必须为规范中的每个动词序列提供一个额外的参数。只要给定的每个参数都可以转换为格式动词所需的类型,动词就会与连续的参数匹配并按指示进行格式化。
默认情况下,% 序列会按顺序使用参数,从第一个开始。在动词字母之前立即引入一个 [n] 序列(其中 n 是十进制整数),可以显式地通过其一基索引选择特定的值参数。此后没有显式索引的调用将从 n+1、n+2 等开始继续。
如果格式字符串请求不可能的转换或访问的参数多于给定的参数,函数将产生错误。对于不支持的格式动词也会产生错误。
动词
规范可以包含以下动词。
动词 | 结果 |
---|---|
%% | 字面量百分号,不消耗值。 |
%t | 转换为布尔值并生成 true 或 false。 |
%b | 转换为整数并生成二进制表示。 |
%d | 转换为整数并生成十进制表示。 |
%o | 转换为整数并生成八进制表示。 |
%x | 转换为整数并生成小写字母的十六进制表示。 |
%X | 类似于 %x,但使用大写字母。 |
%e | 转换为数字并生成科学计数法,例如 -1.234456e+78。 |
%E | 类似于 %e,但使用大写 E 表示指数。 |
%f | 转换为数字并生成不带指数的小数表示,例如 123.456。 |
%g | 对于大指数类似于 %e,否则类似于 %f。 |
%G | 对于大指数类似于 %E,否则类似于 %f。 |
%s | 转换为字符串并插入字符串的字符。 |
%q | 转换为字符串并生成 JSON 引号字符串表示。 |
string.join
string.join 使用字符作为分隔符将数组中的所有项连接成一个字符串。
string.join(list, separator)
示例
> string.join(["foo", "bar", "baz"], "-")
"foo-bar-baz"
> string.join(["foo", "bar", "baz"], ", ")
"foo, bar, baz"
> string.join(["foo"], ", ")
"foo"
string.replace
string.replace 在字符串中搜索子字符串,并将子字符串的每次出现替换为替换字符串。
string.replace(string, substring, replacement)
示例
> string.replace("1 + 2 + 3", "+", "-")
"1 - 2 - 3"
string.split
string.split 通过在所有分隔符出现的位置分割字符串来生成列表。
split(list, separator)
示例
> string.split("foo,bar,baz", "," )
["foo", "bar", "baz"]
> string.split("foo", ",")
["foo"]
> string.split("", ",")
[""]
string.to_lower
string.to_lower 将字符串中的所有大写字母转换为小写。
示例
> string.to_lower("HELLO")
"hello"
string.to_upper
string.to_upper 将字符串中的所有小写字母转换为大写。
示例
> string.to_upper("hello")
"HELLO"
string.trim
string.trim 从字符串的开头和结尾移除指定字符集。
string.trim(string, str_character_set)
示例
> string.trim("?!hello?!", "!?")
"hello"
> string.trim("foobar", "far")
"oob"
> string.trim(" hello! world.! ", "! ")
"hello! world."
string.trim_prefix
string.trim_prefix 从字符串的开头移除前缀。如果字符串不是以前缀开头,则返回原字符串。
示例
> string.trim_prefix("helloworld", "hello")
"world"
string.trim_suffix
string.trim_suffix 从字符串的结尾移除后缀。
示例
> string.trim_suffix("helloworld", "world")
"hello"
string.trim_space
string.trim_space 从字符串的开头和结尾移除所有空白字符。
示例
> string.trim_space(" hello\n\n")
"hello"