Lua字符串及字符串匹配
来源:互联网 发布:淘宝情侣店铺有真的吗 编辑:程序博客网 时间:2024/04/20 08:05
--lua中字符串索引从前往后是1,2,……,从后往前是-1,-2……。
--string库中所有的function都不会直接操作字符串,只返回一个结果
基本函数
函数
描述
示例
结果
len
计算字符串长度
string.len("abcd")
4
rep
返回字符串s的n个拷贝(repeat重复)
string.rep("abcd",2)
abcdabcd
lower
返回字符串全部字母大写
string.lower("AbcD")
abcd
upper
返回字符串全部字母小写
string.upper("AbcD")
ABCD
format
返回一个类似printf的格式化字符串
string.format("the value is:%d",4)
the value is:4
sub
返回子字符串substring from index i to j of s
string.sub("abcd",2)
bcd
string.sub("abcd",-2)
cd
string.sub("abcd",2,-2)
bc
string.sub("abcd",2,3)
bc
find
在字符串中查找,找到则返回匹配串开始索引和结束索引,否则返回nil。第三个参数是可选的:标示目标串中搜索的起始位置。
string.find("cdcdcdcd","ab")
nil
string.find("cdcdcdcd","cd")
1 2
string.find("cdcdcdcd","cd",7)
7 8
gsub
全局字符串替换
在字符串中替换(substitution替换),有三个参数:目标串,模式串,替换串。第四个参数是可选的,用来限制替换的范围
string.gsub("abcdabcd","a","z");
zbcdzbcd 2
string.gsub("aaaa","a","z",3);
zzza 3
byte
返回字符的整数形式,字符->数字
string.byte("ABCD",4)
68
char
将整型数字转成字符并连接,数字->字符
string.char(97,98,99,100)
abcd
基本模式串
字符类
描述
示例
结果
.
任意字符
string.find("",".")
nil
%s
空白符(space)
string.find("ab cd","%s%s")
3 4
%S
非空白符
string.find("ab cd","%S%S")
1 2
%p
标点字符(punctuation)
string.find("ab,.cd","%p%p")
3 4
%P
非标点字符
string.find("ab,.cd","%P%P")
1 2
%c
控制字符(control)
string.find("abcd\t\n","%c%c")
5 6
%C
非控制字符
string.find("\t\nabcd","%C%C")
3 4
%d
数字(digit)
string.find("abcd12","%d%d")
5 6
%D
非数字
string.find("12abcd","%D%D")
3 4
%x
十六进制数字(hexadecimal)
string.find("efgh","%x%x")
1 2
%X
非十六进制数字
string.find("efgh","%X%X")
3 4
%a
字母(alpha)
string.find("AB12","%a%a")
1 2
%A
非字母
string.find("AB12","%A%A")
3 4
%l
小写字母(lowercase)
string.find("ABab","%l%l")
3 4
%L
大写字母
string.find("ABab","%L%L")
1 2
%u
大写字母(uppercase)
string.find("ABab","%u%u")
1 2
%U
非大写字母
string.find("ABab","%U%U")
3 4
%w
字母和数字
string.find("a1()","%w%w")
1 2
%W
非字母非数字
string.find("a1()","%W%W")
3 4
转义字符%
字符类
描述
示例
结果
%
转义字符
string.find("abc%..","%%")
4 4
string.find("abc..d","%.%.")
4 5
用[]创建字符集,"-"为连字符,"^"表示字符集的补集
字符类
描述
示例
结果
[01]
匹配二进制数
string.find("32123","[01]")
3 3
[AB][CD]
匹配AC、AD、BC、BD
string.find("ABCDEF","[AB][CD]")
2 3
[[]]
匹配一对方括号[]
string.find("ABC[]D","[[]]")
4 5
[1-3]
匹配数字1-3
string.find("312","[1-3][1-3][1-3]")
1 3
[b-d]
匹配字母b-d
string.find("dbc","[b-d][b-d][b-d]")
1 3
[^%s]
匹配任意非空字符
string.find(" a ","[^%s]")
3 3
[^%d]
匹配任意非数字字符
string.find("123a","[^%d]")
4 4
[^%a]
匹配任意非字母字符
string.find("abc1","[^%a]")
4 4
用"()"进行捕获
字符类
描述
示例
结果
()
捕获字符串
string.find("12ab","(%a%a)")
3 4 ab
string.find("ab12","(%d%d)")
3 4 12
捕获是这样一种机制:可以使用模式串的一部分匹配目标串的一部分。将你想捕获的模式用圆括号括起来,就指定了一个捕获。
print(string.find("name = Anna", "(%a+)%s*=%s*(%a+)"))--1 11 name Anna,匹配并捕获结果
print(string.find("name = Anna", "%a+%s*=%s*%a+"))--1 11,只匹配不捕获结果
'%a+' 表示菲空的字母序列;'%s*' 表示0个或多个空白。
在上面的例子中,整个模式代表:一个字母序列,后面是任意多个空白,然后是 '=' 再后面是任意多个空白,然后是一个字母序列。两个字母序列都是使用圆括号括起来的子模式,当他们被匹配的时候,他们就会被捕获。当匹配发生的时候,find函数总是先返回匹配串的索引下标,然后返回子模式匹配的捕获部分。
模式修饰符
模式修饰符总是必须放在被修饰的后面。如要匹配1个多个数字---print(string.find("[17/1/2015]", "%d+"))--2 3
修饰符
描述
示例
结果
+
表示1个或多个,匹配最多个
string.find("aaabbb","(a+b)")
1 4 aaab
string.find("cccbbb","(a+b)")
nil
-
表示0个或多个,匹配最少个
string.find("zzxyyy","(xy-)")
3 3 x
string.find("zzzyyy","(x-y)")
4 4 y
*
表示0个或多个,匹配最多个
string.find("mmmnnn","(m*n)")
1 4 mmmb
string.find("lllnnn","(m*n)")
4 4 n
?
表示0个或1个
string.find("aaabbb","(a?b)")
3 4 ab
string.find("cccbbb","(a?b)")
4 4 b
应用实例
local number = {}--给数字添加上千分号function number.commaSeperate(num) local formatted,k = tostring(tonumber(num)),0 while true do --匹配以[0,1]个减号,[1,n]个数字为开头,紧挨着3个数字,然后再模式1和模式2之间添加上逗号 formatted, k = string.gsub(formatted,"^(-?%d+)(%d%d%d)",'%1,%2') if k == 0 then break end end return formattedendlocal str = number.commaSeperate("-456852963")print(str)---456,852,963function string.ltrim(str) return string.gsub(str, "^[ \t\n\r]+", "")endfunction string.rtrim(str) return string.gsub(str, "[ \t\n\r]+$", "")endfunction string.trim(str) str = string.gsub(str, "^[ \t\n\r]+", "") return string.gsub(str, "[ \t\n\r]+$", "")end
- Lua字符串及字符串匹配
- Lua字符串及字符串匹配
- Lua字符串匹配
- LUA字符串匹配操作
- lua中字符串匹配
- lua字符串模式匹配
- lua 字符串模式匹配
- lua字符串匹配
- lua 字符串模式匹配
- lua 字符串匹配
- Lua学习之字符串函数及模式匹配
- Lua学习笔记之字符串及模式匹配
- lua中字符串匹配笔记
- Lua中字符串匹配笔记
- lua中字符串匹配笔记
- lua中字符串匹配笔记
- lua中字符串匹配笔记
- Lua 基本的字符串匹配
- 第十二周项目3——6 银行系统
- 2015-1-9_sjsy游戏服务器编程
- C# 实现最简单的FTP下载功能
- 关于android的listview前端属性总结
- 操作系统精髓与设计原理学习笔记九:IO管理和磁盘调度
- Lua字符串及字符串匹配
- 为什么项目要使用DIRECTORY_SEPARATOR做分割符
- html学习笔记三
- DOM方法
- 使用Screen后台执行任务,防止SSH中断
- See LCS again
- 杭电1106
- 给定字符串String str=“aaaaabbbbbccccddddaa”,输出 a7b5c4d4;
- 网易ios 面试