以下函数要先导入Str.lua插件才能使用(附件下载Str.lua)
一:函数功能详解篇
1、重复字符串
语法:
Str.String(s, n , sep)
s:目标字符
n:重复次数
sep:分隔符,可省略,省略表示以空字符连接
返回值:
执行成功:返回字符串,n个s以sep相连的字符串
执行失败:返回null
示例:Dim  x
x= Str.String("1",3,"|") 
TracePrint x                ‘1|1|1
x= Str.String("1",3)           
TracePrint x                  ‘111
复制代码注:此函数无模式匹配,是自带String函数的扩展版
2、替换字符串
语法:
Str.Replace(s, pattern, rep , n)
s:目标字符
pattern:模式匹配字符
rep:替换字符
n:替换次数,可省略,若果省略,表示全部替换
返回值:
执行成功:字符串,返回s中匹配上pattern字符串中前n个被替换成rep后的字符串
执行失败:返回null
示例://假如我要想把w字母和d字母之间的其它字符替换成"我"
Dim s ,x
s = "hello  world  world "
x= Str.Replace(s,"w%a+d","我")   
TracePrint x    'hello  我  我
x= Str.Replace(s,"w%a+d","我",1)
TracePrint x    'hello  我  world
复制代码3 、查字符出现的起始位置
语法:
Str.Find (s, pattern,start)
s:目标字符
pattern:模式匹配字符
start:匹配的起始位置,可省略,默认为1
返回值:
执行成功:返回数值型,匹配上pattern字符串第一次出现的位置
执行失败:返回null
示例://寻以w开头d结尾的单词第一次出现的位置
Dim s ,x
s = "hello world  world "
x=str.Find(s,"w%a+d",1)
TracePrint x          ‘x=7
复制代码4、返回匹配上的字符串
语法:
Str.Match(s, pattern, start)
s:目标字符
pattern:模式匹配字符
start:匹配的起始位置,可省略,默认为1
返回值:
执行成功:返回匹配上pattern的第一个字符串
执行失败:返回null
示例:Dim s ,x
s = "hello world  world "
x=Str.Match(s,"w%a+d")
TracePrint x            ‘world
复制代码注意:以上的函数可以使用模式匹配的强大功能也可以使用平常习惯的匹配模式,推荐用模式匹配!
示例:Dim s ,x
s = "hello  world  world "
x= Str.Replace(s,"world","我")   
TracePrint x    'hello  我  我
x= Str.Replace(s,"world","我",1)
TracePrint x    'hello  我  world
复制代码5、附带2个常用时间函数
①获取时间
语法:
Str. GetTime ()
返回值:
执行成功:返回字符串,格式Hour:Minute:Second
执行失败:返回null
示例:Dim MyTime
MyTime=Str.GetTime()
TracePrint MyTime
复制代码例如:10:59:20
②获取完整时间
语法:
Str.Now()
返回:
执行成功:返回字符串,格式Year/Month/Day |Hour:Minute:Second
执行失败:返回null
示例:Dim t1
t1=Str.Now()
TracePrint t1
复制代码例如:2014/08/13|10:59:20
重点推荐字符串加密解密函数(数据安全有保障)
6、字符串加密解密函数
①加密函数:
语法:
Str.Encrypt(bytes,key)
Bytes:待加密的字符串
Key:密码,纯数字或者字符串
返回值:
执行成功:返回字符串,加密后的字符串
执行失败:返回null
②解密函数:
语法:
Str.Decrypt(bytes,key)
Bytes:待解密的字符串
Key:密码,纯数字或者字符串
返回值:
执行成功:返回字符串,解密后的字符串
执行失败:返回null
加密解密范例:Dim inText,outText
inText=Str.Encrypt("zhou164902127按键精灵","123ABC")
TracePrint inText          ‘,?7?<?SnX ?@?#_ C?
outText=Str.Decrypt(inText,"123ABC")
TracePrint outText        ‘zhou164902127按键精灵
复制代码7、去掉前后指定字符串
语法:
Str.strtrim(str,cmpstr)
str:源字符串
cmpstr:要去掉的字符串
返回值:
执行成功:返回字符串,去掉前后字符串之后的字符串
执行失败:返回nullTracePrint str.strtrim("abcuiuiuiabc","abc")  ' uiuiui
复制代码
8、求算术表达式的值
语法:
Str.Getvalue(str)
str:字符串,算术表达式,暂时只支持数字,不支持函数
返回值:
执行成功:算术表达式的值
执行失败:返回value("1+2*(3+4)-(5+3)*0")  ‘15
复制代码9、随机汉字
语法:
Str.RndChr()
返回值:
执行成功:返回一个随机汉字
执行失败:返回nullTracePrint  Str.RndChr()
复制代码10、随机大小写字母
语法:
Str.RndLetter()
返回值:
执行成功:返回一个随机字母
执行失败:返回nullTracePrint  Str.RndLetter()
复制代码11、随机数字
语法:
Str.RndNum(m,n)
m:数值型,可省略(m省略时必须n同时也省略)
n:数值型,可省略
如果n省略,产生1到m的随机数
字符串replace函数
如果m,n省略,产生0到1的随机数
如果m,n都不省略,产生m到n的随机数
返回值:
执行成功:返回一个随机数字
执行失败:返回nullTracePrint  Str.RndNum()
复制代码二:模式匹配功能详解篇
1、模式匹配常用字符
. 任意字符
%a 字母
%c 控制字符
%d 数字
%l 小写字母
%p 标点字符
%s 空白符
%u 大写字母
%w 字母和数字
%x 十六进制数字
%z 代表0的字符
        上面字符类的大写形式表示小写所代表的集合的补集。例如,'%A'非字母的字符。'%d' 表示 '[0-9]';'%x' 表示'[0-9a-fA-F]'。然而,如果你想查八进制数,你可能更喜欢使用 '[0-7]' 而不是'[01234567]'。你可以在字符集(char-set)的开始处使用 '^' 表示其补集:'[^0-7]' 匹配任何不是八进制数字的字符;'[^\n]' 匹配任何非换行符户的字符。记住,可以使用大写的字符类表示其补集:'%S' 比 '[^%s]' 要简短些。
        '%' 用作特殊字符的转义字符,因此 '%.' 匹配点;'%%' 匹配字符 '%'。
有以下特殊字符:( ) . % + - * ? [ ^ $
注意:’%’用作转义字符仅限模式匹配,和'\'并不冲突
     
        '%b' 用来匹配对称的字符。常写为 '%bxy' ,x和y是任意两个不同的字符;x作为匹配的开始,y作为匹配的结束。比如,'%b()' 匹配以 '(' 开始,以 ')' 结束的字符串:
常用的这种模式有:'%b()' ,'%b[]','%b%{%}' 和 '%b<>'。你也可以使用任何字符作为分隔符。
        以 '^' 开头的模式只匹配目标串的开始部分,相似的,以 '$' 结尾的模式只匹配目标串的结尾部分
if Str.Find(s, "^%d") then ...
检查字符串s是否以数字开头,而
if Str.Find(s, "^[+-]?%d+$") then ...
检查字符串s是否是一个整数。
2、可以使用修饰符来修饰模式增强模式的表达能力,模式修饰符有四个:
+ 匹配前一字符1次或多次          最长匹配
* 匹配前一字符0次或多次          最长匹配
- 匹配前一字符0次或多次          最短匹配
? 匹配前一字符0次或1次 
最长匹配:和最短匹配的区别,实例看看Dim s ,x
s="int x; /* x */ int y; /* y */"
//最长匹配,尽可能的匹配多的字符(匹配一个还往后匹配,看有没有更多的,有追求滴)
x= Str.Match(s,"/%*.+%*/")    '/* x */ int y; /* y */
TracePrint x 
//最短匹配,尽可能的匹配少的字符(匹配一个就结束,太没追求了)
x= str.Match(s,"/%*.-%*/")    '/* x */ 
TracePrint x

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。