Lua之字符串处理

在任何编程语言中字符串的处理都是非常重要的,虽然都是简单的总结,但还是总结一下,以便使用时候查阅:

lua中的字符串是不可变的,就像是java中的String对象是final的一样

string.len(s)返回s的长度。

string.rep(s, n)返回重复s字符串n次的字符串。

string.lower(s)返回一份已将大写转成小写的字符串s的拷贝

string.upper(argument):字符串全部转为大写字母

lower,upper都是使用本地字符集的,另外,如果你想对一个string数组进行排序,并不区分大小写,你可能像这么写:

table.sort(a, function(a, b)

     return string.lower(a) < string.lower(b)

end)


string.sub(s, i, j)将从s提取一段字符串,从ij(闭区间[i, j]),当然你可以使用负索引值,将从字符串尾部算起,-1是最后一个字符,-2是倒数第二,等等,这么做的好处是当我们要提取直到末尾几个字符时,从后面数起就很方便。例如:

s = "[hello,world]"

print(string.sub(s, 2, -2)) --> hello,world


string.gsub(mainString,findString,replaceString,num)在字符串中替换,mainString为要原始字符串,findString为被替换的字符,replaceString要替换的字符,num替换次数(可以忽略,则全部替换),例如:

string.gsub("aaaa","a","z",3);

zzza3


string.find (str, substr, [init, [end]])

在一个指定的目标字符串中搜索指定的内容(第三个参数为索引),返回其具体位置。不存在则返回nil。例如

print(string.find("Hello Lua user", "Lua", 1))

7       9


string.reverse(arg)

字符串反转

string.char(arg) string.byte(arg[,int])

char 将整型数字转成字符并连接, byte转换字符为整数值(可以指定某个字符,默认第一个字符)

string.format(...)

返回一个类似printf的格式化字符串

print(string.format("日期格式化 %02d/%02d/%04d", date, month, year))


模式匹配

lua string库里最强大的函数是那些模式匹配函数:find, match, gsub, gmatch。和其他脚本语言不同,lua既没有用POSIX的正则表达式,也没有用perl的正则表达式。原因是实现这些导致lua占用更多内存,而lua的初衷是小巧的,嵌入应用的语言

模式匹配函数:find, match, gsub, gmatch

string.matchstring.find类似,都是在指定的string中查找相应的模式。不同的是,他返回的是找到的那部分string

例如:

date = "now is 2014/10/6 17:58"

d = string.match(date, "%d+/%d+/%d+")

print(d)   --> 2014/10/6


string.gmatch函数将返回一个迭代器,用于迭代所有出现在给定字符串中的匹配字符串,例如:

local str = "Hello World"

local iteratorFunc = string.gmatch(str, "%a+") -- %a+表示匹配所有单词

 for i in iteratorFunc do

print(i)

end


#可以获取字符串长度,例如:

>str='2016-09-01'

> print(#str)

10

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值