简单的string函数:
string.len(s) 返回字符串s的长度
string.rep(s,n) 返回n次重复字符串s的串,如string.rep("a",5) 返回“aaaaa”。
string.lower(s) 将s中大写字母转换为小写
string.upper(s)
string.char(97) 返回数字97对应的字符
string.byte("abc") 返回第一个字符对应的数字97
string.byte("abc",2) 返回98
string.byte("abc",-1) 返回99
string.format("pi = %.4f",PI); -->pi = 3.1415
d=5;m=11;y=2013;
string.format("%02d/%02m/%04y",d,m,y); -->05/11/2013 02表示以固定的2位数字显示,不足的前面补0
tag,title = "h1"," title";
string.format("<%s>%s<%s>",tag,title,tag);
string.sub(str,i,j) 截取字符串str的从第i个字符到第j个字符之间的串。字符串索引从1开始。
string.sub(str,1,j) 返回从第1个字符开始长度为j的前缀。
string.sub(str,j,-1) 返回从第j个字符开始的后缀。 -1表示最后一个字符,-2表示倒数第二个字符。
string.sub(str,j) 等同于string.sub(str,j,-1),第三个参数默认为-1。
Lua的字符串是恒定不变的,字符串操作不会改变字符串的值,而是返回一个新的字符串。
-------------------------------------------------------------------------------------------
模式匹配函数:
1. 字符串查找:
string.find(目标串,模式串[,目标串搜索的起始位置(可选)])
用于在目标串中搜索指定模式的串。如果找到指定串返回他的开始和结束的索引,否则返回nil。
s = "hello world”
i,j = string.find(s,"hello") 结果:i=1,j=5
print(string.sub(s,i,j)) --> hello
string.find(s,str,j) 第三个参数可选,标示目标串中搜索的起始位置。
Example: 用字符串s中所有的新行构造一个表。
local t = {};
local i = 0;
while true do
i = string.find(s,"\n",i+1);
if i == nil then
break;
end;
table.insert(t,i);
end;
2. 全局字符串替换:
string.gsub(目标串,模式串,替换串[,替换的次数(用于限制替换的范围)])
s = string.gsub("lua is cute","cute","great"); --> s = "lua is greate"
s = string.gsub("lua is cute,lucky","u","U",2); --> s = "lUa is cUte,lucky" 替换2此匹配的串
_,count = string.gsub("lua is cute,lucky,"u","U") --> count=3,count是替换的次数
3. string.gfind 全局字符串查找