lua学习--特殊字符

来源:互联网 发布:保鲜膜pe和pvdc 知乎 编辑:程序博客网 时间:2024/05/24 02:41
local a = {"a","b","c","d","e","f"}
-- local b = table.concat(a,"@")
-- print(b)
table.insert(a,"w")     不能赋值给一个表,返回值
for k,v in ipairs(a) do
print(k,v)

end


特殊字符:在模式匹配中有一些特殊字符,他们有特殊的意义,Lua中的特殊字符如下:( ) . % + - * ? [ ^ $

  '%' 用作特殊字符的转义字符,转义字符 '%'不仅可以用来转义特殊字符,还可以用于所有的非字母的字符。当对一个字符有疑问的时候,为安全起见请使用转义字符转义他。只有字符串被用作模式串用于函数的时候,'%' 才作为转义字符。

  []方括号表示匹配字符集

  -中横线连接符

  ^表示补集

  Lua的字符类依赖于本地环境

  模式修饰符:Lua中的模式修饰符有四个:

  + 匹配前一字符1次或多次 最长匹配

  * 匹配前一字符0次或多次

  - 匹配前一字符0次或多次 最短匹配

  ? 匹配前一字符0次或1次

  Capture是这样一种机制:可以使用模式串的一部分匹配目标串的一部分。将你想捕获的模式用圆括号括起来,就指定了一个capture。

IO库:

  I/O操作两种模式:

  (1)简单模式:当前输入文件、当前输出文件,使用io.input和io.output来设定;

  (2)完全模式:使用文件句柄,它以一种面对对象的形式,将所有的文件操作定义为文件句柄的方法。

  IO库的所有函数都放在表io中。

  I/O库将当前输入文件作为标准输入(stdin),将当前输出文件作为标准输出(stdout)。

  io.read函数:从当前文件读入串,用参数来设定读取的模式:

  (1)io.read("*all")函数从当前位置读取整个输入文件,注意是从当前位置开始读入。

  (2)io.read("*line")函数返回当前输入文件的下一行(不包含最后的换行符)。

  (3)io.read("*number")函数从当前输入文件中读取出一个数值。只有在该参数下read函数才返回数值,而不是字符串。可以这样使用,一次读取多个数字:

  local n1, n2, n3 = io.read("*number", "*number", "*number")

  (4)io.read(n)读取num个字符到串,io.read(0)函数的可以用来测试是否到达了文件末尾。如果不是返回一个空串,如果已是文件末尾返回nil。

  由于Lua对长串类型值的有效管理,在Lua中使用过滤器的简单方法就是读取整个文件到串中去,处理完之后(例如使用函数gsub),接着写到输出中去。在任何情况下,都应该考虑选择使用io.read函数的 " *.all " 选项读取整个文件,然后使用gfind函数来分解。

  通常Lua中读取整个文件要比一行一行的读取一个文件快的多。

  尽量使用第二种方法,它避免了串联操作,消耗较少的资源

  io.write(a..b..b)
  io.write(a, b, c)

  write和print的不同之处:

  (1)write不附加任何额外的字符到输出中去;

  (2)write函数是使用当前输出文件,而print始终使用标准输出;

  (3)print函数会自动调用参数的tostring方法,可以显示出table、function和nil。

 

  将我们的数据文件内容作为Lua代码写到Lua程序中去。通过使用table构造器,这些存放在Lua代码中的数据可以像其他普通的文件一样看起来引人注目。

  Lua构造器,自描述数据格式,数据描述是Lua的主要应用之一。

 



0 0