LUA字符串


字符串相关库函数

转换为数值型:tonumber (e [,base])

尝试将字符串类型转换为数值型,如果失败返回nil。

参数e:指定字符串,可选参数base:进制模式,二进制到三十六进制,如:tonumber("FFF", 16)返回4095,无参数时默认转换为十进制。

转换为字符串型:tostring (v)

尝试将数值型转换为字符串类型

参数v:任意数值

转换为字符内部表示的数值:string.byte (s [, i [, j]])

返回字符串内单个或所有字符的内部表示数值

参数s:指定字符串,可选参数i:字符串s定位的起点,可选参数j:字符串s定位的终点。无参数时默认转换字符串s中第一个字符。

将数值转换为字符:string.char (v)

返回数值所表示的字符,或多个数值参数表示的多个字符连接而成的字符串。

参数v:零个或多个整型数值

获取字符串长度:string.len (s)

返回字符串的长度

参数s:指定字符串,完全可以用 # 代替。

拷贝字符串:string.rep (s, n [, sep])

返回以参数n为拷贝次数并全部拼接的字符串

参数s:指定字符串,参数n:拷贝次数,可选参数sep:拷贝字符串间的任意分隔字符。

反转字符串:string.reverse (s)

返回前后反转的字符串

参数s:指定字符串

转换为小写字母:string.lower (s)

返回全部为小写字母的字符串,非字母不会被转换。

参数s:指定字符串

转换为大写字母:string.upper (s)

返回全部为大写字母的字符串,非字母不会被转换。

参数s:指定字符串

格式化输出:string.format (formatstring, ...)

类似C语言中printf ()函数

操作符

"#" -- 获取字符串的长度

print (#"Hello") --> 5

".." -- 连接两个字符串并生成新串,如果被连接目标是数值型,则自动转换成字符串型后进行连接。

print ("Hello"..365) --> Hello365

定义字符串常量

" "  -- 使用双引号定义,双引号范围内的所有 '  ' 单引号字符无需额外转义。

'  '  -- 使用单引号定义,单引号范围内的素有 " " 双引号字符无需额外转义。

[[ ]] -- 定义多行字符串,字符串内所有字符不会被转义,且会忽略所有换行符。为防止字符串内有冲突的符号]],可以在方括号中间加上一定数量的等号=来保持前后匹配,如:[==[ ]==]。

转义字符

\a -- 响铃
\b -- 退格
\f -- 换页
\n -- 换行
\r -- 回车
\t -- 水平制表符
\v -- 垂直制表符
\\ -- 反斜杠
\" -- 双引号
\' -- 单引号
\z -- 连接,跳过后面所有空白字符,直到遇到非空白
\ddd -- ddd三位十进制数字
\xhh -- hh两位十六进制数字
\u{h...h} -- LUA5.3版本后声明UTF-8字符,{}中任意有效的十六进制数字

强制类型转换

LUA会在需要数学运算时对字符串尝试进行数值转换,相反也会在需要字符串环境下对数值类型进行字符串转换。