字符串
参考《lua程序设计》
lua中字符串是不可变量,不能直接改变某个字符串里的某个字符,但是可以新建来达到修改的目的。
a="one string"
b=string.gsub(a,"one","another")--改变某些部分
可以使用长度操作符(#)来获取长度
print(#"good bye") -->8
可以用连接操作符…来进行字符串的连接。如果存在数字,则将其转化成字符串
"hello ".."world" -->hello world
字符串常量
可以通过转义系列\ddd和\xhh来声明字符,类似于ASCII码那样
也可以使用转义序列\u{h…h}来声明UTF-8字符
"\u{3b1}"
长字符串
使用一对双方括号来声明多行字符串常量,且转义符不会呗转义
若第一个字符是换行符,则被忽略
在声明大段代码字符串非常方便
强制类型转化
在数值后紧接使用 … 连接是,必须用空格将他们分开,否则第一个将视为小数点
如果需要显示转换,使用tonumber函数、tostring函数
tonumber("-3") -->-3
tonumber("10e") -->nil
--默认是10进制,也可指明其他进制
tonumber("fff",16) -->4095
特殊,在比较相等时,不会进行隐式的转换,即"2"与2是不相等的
故混用字符串和数值时,会抛出异常
字符串标准库
切记,字符串是不可变的,只能返回一个新的字符串
函数 | 作用 |
---|---|
string.len | 相当于# |
string.rep(s,n) | 将字符串重复n次 |
string.reverse | 字符串翻转 |
string.lower | 大写转小写,同理还有string.upper |
string.sub(s,i,j) | 从s中提取[i,j]字符,索引从开始,支持负数,-1指最后一个 |
string.char&string.byte | 类型与ASCII码一样的,数值与串的对应转换 |
string.format | 字符串格式输出 |
string.find | 字符串的模式搜索,返回起始与结束位置 |
string.gsub | 搜索并替换 |
可用冒号操作符
Unicode编码
有utf-8的函数库