Lua之String库用法API

来源:互联网 发布:租借法案 给苏联的数据 编辑:程序博客网 时间:2024/06/04 19:21

像这样的东西可以去查找API,上边的介绍很详细。

简单的说一下常用的Lua里的String的用法:

1、string.byte (s [, i [, j]])

  返回字符串的内部数字编码,i、j为字符串的索引,i、j限定了多少字符就返回多少值。如下:

k1,k2,k3 = string.byte("abcdef",1,3)print (k1,k2,k3)    --97    98    99

 

  2、string.char (···)

  跟byte()相反,把数字编码转换为字符串。如下:

复制代码
s = string.char(97,98,99)print(s)            --abcn = string.char()print(n)            --什么都没输出print(type(n))        --stringprint(string.char(string.byte("hello",1,-2)))    --hell
复制代码

 

  3、string.dump (function [, strip])

  这个函数是用来序列化函数的。传入一个函数,返回一个字符串。通过load该字符串可以反序列化该函数。用法如下:

复制代码
function max( a,b )    return a>b and a or bend--序列化du = string.dump(max)print(type(du))        --stringprint(du)            --LuaQ--反序列化max2 = load(du)    --调用函数print(max2(1,2))    --2
复制代码

 

  4、string.find (s, pattern [, init [, plain]])

  这个函数如其名,用来查找匹配的pattern,返回该pattern的索引。找到一个匹配就返回。如果找不到,返回空。如下:

txt = "it's very very good!"i ,j = string.find(txt, "very")print(i,j)    --6    9i ,j = string.find(txt, "big")print(i,j)    --nil    nil  

 

  5、string.format (formatstring, ···)

  这个函数用来格式化字符串。API文档很复杂,用法很多,可查看文档。如下:

print(string.format("i want %d apples", 5))    --i want 5 apples

 

  6、string.match (s, pattern [, init])

  这个函数与find()函数类似,不同的是,find返回匹配的索引,这个函数返回第一个匹配的内容本身,如下:

print(string.format("i want %d apples", 5))    --i want 5 apples

 

  7、string.gmatch (s, pattern)

  这个函数基本就是用来配合for循环使用的,返回一个迭代器函数,每次调用这个迭代器函数都会返回一个匹配该字符串的值。

  Lua5.3参考手册里面的示例很经典了,如下:

s = "hello world from Lua"for w in string.gmatch(s, "%a+") do    print(w)    --连续输出每个单词end

 

  8、string.gsub (s, pattern, repl [, n])

这个函数用来进行字符替换的。将每个匹配的字符串替换成指定的字符串repl。返回替换完毕的字符串和替换的次数。个人觉得这个函数非常有意思。

若repl为函数则会用匹配到的参数作为参数调用这个函数,若repl为table,则会用匹配到的参数作为键去查找这个表。如下:

复制代码
--字符串print(string.gsub("i have an apple", "apple", "peach"))--函数function ff( arg )    print("function arg : " .. arg)endprint(string.gsub("my name is qsk", "%a+", ff))--tablet = {}metat = {}metat.__index = function ( table,key )            return "!!" .. keyendsetmetatable(t, metat)print(string.gsub("my name is qsk", "%a+", t))
复制代码

 测试表的时候,给该表设置了一个元表。输出如下:

复制代码
i have an peach    1function arg : myfunction arg : namefunction arg : isfunction arg : qskmy name is qsk    4!!my !!name !!is !!qsk    4
复制代码

匹配字符串中的单词,匹配了4次所以输出的第二个参数是4. 

 

  9、string.len (s)、string.lower (s)、string.upper (s)

  这个两个函数都太简单了,一个是求字符串的长度。另一个是将字符串转换为小写。如下:

print(string.len("abcd"))        --4print(string.lower("MACOS"))    --macosprint(string.upper("12abAB"))    --12ABAB

 

  10、string.rep (s, n [, sep])

  这个函数就是用来将某个字符串自我复制链接起来。如下:

print(string.rep("s", 5,"-"))        --s-s-s-s-sprint(string.rep("ab", 5))            --ababababab

 

  11、string.reverse (s)

  如名,用来反转字符串,反转字符串中字符的序列。如下:

print(string.reverse("abcdefg"))        --gfedcba

 

  12、string.sub (s, i [, j])

  这个函数就是用来截取字符串。很简单,如下:

print(string.sub("abcdefg", 3,5))        --cde
原创粉丝点击