博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
常用lua代码块
阅读量:5775 次
发布时间:2019-06-18

本文共 3093 字,大约阅读时间需要 10 分钟。

1、读取请求体中参数

1 local request_method = ngx.var.request_method 2 local args 3 --获取参数的值 4 if "GET" == request_method then 5     args = ngx.req.get_uri_args() 6 elseif "POST" == request_method then 7     ngx.req.read_body() 8     args = ngx.req.get_post_args() 9 end10 local param = args["param"]

2、string库

2.1 string.len(s)    

返回字符串的长度。

print(string.len("hello lua")) -->output  9
2.2 string.find(s, p [, init [, plain]])    

匹配字符串,查找开始和结束位置

s为母字符串

p为子字符串

init默认为1,从开始查找;如果为负数,则从string.len(s)+init处开始向右查找

plain默认false,如果为true,将视p为一个字符串

print(string.find("abc cba","ab"))print(string.find("abc cba","ab",2))--从索引为2的位置开始匹配字符串:abprint(string.find("abc cba","ba",-1))   --从索引为7的位置开始匹配字符串:baprint(string.find("abc cba","ba",-3))   --从索引为6的位置开始匹配字符串:baprint(string.find("abc cba", "(%a+)",1))--从索引为1处匹配最长连续且只含字母的字符串print(string.find("abc cba", "(%a+)",1,true)) --从索引为1的位置开始匹配字符串:(%a+)-->output1    2nilnil6    71    3    abcnil
2.3 string.format(formatstring, ···)

格式化字符串

formatstring由字符'%'加上一个字母组成,这些字母指定了如何格式化参数,例如'd'用于十进制数、'x'用于十六进制数、'o'用于八进制数、'f'用于浮点数、's'用于字符串等。在字符'%'和字母之间可以再指定一些其他选项,用于控制格式的细节。

print(string.format("%.4f", 3.1415926))   --保留4位小数print(string.format("%d %x %o", 31, 31, 31))--十进制数31转换成不同进制d = 29; m = 7; y = 2015                  --一行包含几个语句,用;分开print(string.format("%s %02d/%02d/%d", "today is:", d, m, y))-->output3.141631 1f 37today is: 29/07/2015
2.4 string.match(s, p [, init])

匹配字符串,返回字符串形式,与find方法功能相似,返回结果不同

若匹配成功,则返回目标字符串中与模式匹配的子串;否则返回nil。

print(string.match("hello lua", "lua"))print(string.match("lua lua", "lua", 2))  --匹配后面那个luaprint(string.match("lua lua", "hello"))print(string.match("today is 27/7/2015", "%d+/%d+/%d+"))-->outputlualuanil27/7/2015
2.5 string.gmatch(s, p)

match方法的升级版,通过遍历返回匹配的所有字符串

s = "hello world from Lua"for w in string.gmatch(s, "%a+") do  --匹配最长连续且只含字母的字符串    print(w)end-->outputhelloworldfromLuat = {}s = "from=world, to=Lua"for k, v in string.gmatch(s, "(%a+)=(%a+)") do  --匹配两个最长连续且只含字母的    t[k] = v                                    --字符串,它们之间用等号连接endfor k, v in pairs(t) doprint (k,v)end-->outputto      Luafrom    world
2.6 string.sub(s, i [, j])

根据位置截取字符串

print(string.sub("Hello Lua", 4, 7))print(string.sub("Hello Lua", 2))print(string.sub("Hello Lua", 2, 1)) --看到返回什么了吗print(string.sub("Hello Lua", -3, -1))-->outputlo Lello Lua         --返回空字符串Lua
2.7 string.gsub(s, p, r [, n])

替换字符串

将目标字符串s中所有的子串p替换成字符串r。可选参数n,表示限制替换次数。返回值有两个,第一个是被替换后的字符串,第二个是替换了多少次。

print(string.gsub("Lua Lua Lua", "Lua", "hello"))print(string.gsub("Lua Lua Lua", "Lua", "hello", 2)) --指明第四个参数-->outputhello hello hello   3hello hello Lua     2

3、日期时间函数

3.1 os.time ([table])
--地点为北京print(os.time())    -->output  1438243393--如果参数为table,那么table中必须含有year、month、day字段。其他字缺省时段默认为中午(12:00:00)a = { year = 1970, month = 1, day = 1, hour = 8, min = 1 }print(os.time(a))   -->output  60
3.2 os.difftime (t2, t1)

返回t1到t2的时间差,单位为秒。

local day1 = { year = 2015, month = 7, day = 30 }local t1 = os.time(day1)local day2 = { year = 2015, month = 7, day = 31 }local t2 = os.time(day2)print(os.difftime(t2, t1))   -->output  86400

转载于:https://www.cnblogs.com/wangzhisdu/p/7771219.html

你可能感兴趣的文章
为什么保护容器和微服务很难
查看>>
Ubuntu 16.04桌面版GUI网络配置工具NetworkManager的命令行工具nm-tool无法使用的问题...
查看>>
SpringBoot文件上传下载
查看>>
Java中的泛型
查看>>
中国量子计算机“婴儿”诞生
查看>>
嵌入式Linux学习基础规划篇
查看>>
SAP上阿里云白皮书-第四章 SAP上阿里云规划
查看>>
第7章 使用Keras开发神经网络
查看>>
Linux上的TIME_WAIT和tcp_fin_timeout
查看>>
回顾工作经历,工业“大数据”是发展的必然吗?
查看>>
大二上册生活总结
查看>>
开发手记(一)准备新的征途
查看>>
OS X Keyboard Shortcuts
查看>>
Mutual information and Normalized Mutual information 互信息和标准化互信息
查看>>
python用作监控
查看>>
Centos 升级python2.7到python3.4.2
查看>>
布局小窍门之----让头部和主干内容居中
查看>>
日志分析代码实现(正则表达式)
查看>>
Linux RH5平台下使用Oracle ASM创建数据库
查看>>
js closure ,copy from stackoverflow
查看>>