常用lua代码块
1、读取请求体中参数
local request_method = ngx.var.request_method
local args
--获取参数的值
if "GET" == request_method then
args = ngx.req.get_uri_args()
elseif "POST" == request_method then
ngx.req.read_body()
args = ngx.req.get_post_args()
end
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的位置开始匹配字符串:ab
print(string.find("abc cba","ba",-)) --从索引为7的位置开始匹配字符串:ba
print(string.find("abc cba","ba",-)) --从索引为6的位置开始匹配字符串:ba
print(string.find("abc cba", "(%a+)",))--从索引为1处匹配最长连续且只含字母的字符串
print(string.find("abc cba", "(%a+)",,true)) --从索引为1的位置开始匹配字符串:(%a+)
-->output
nil
nil
abc
nil
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转换成不同进制
d = ; m = ; y = --一行包含几个语句,用;分开
print(string.format("%s %02d/%02d/%d", "today is:", d, m, y))
-->output
3.1416
1f
today is: //
2.4 string.match(s, p [, init])
匹配字符串,返回字符串形式,与find方法功能相似,返回结果不同
若匹配成功,则返回目标字符串中与模式匹配的子串;否则返回nil。
print(string.match("hello lua", "lua"))
print(string.match("lua lua", "lua", )) --匹配后面那个lua
print(string.match("lua lua", "hello"))
print(string.match("today is 27/7/2015", "%d+/%d+/%d+"))
-->output
lua
lua
nil
//
2.5 string.gmatch(s, p)
match方法的升级版,通过遍历返回匹配的所有字符串
s = "hello world from Lua"
for w in string.gmatch(s, "%a+") do --匹配最长连续且只含字母的字符串
print(w)
end -->output
hello
world
from
Lua t = {}
s = "from=world, to=Lua"
for k, v in string.gmatch(s, "(%a+)=(%a+)") do --匹配两个最长连续且只含字母的
t[k] = v --字符串,它们之间用等号连接
end
for k, v in pairs(t) do
print (k,v)
end -->output
to Lua
from world
2.6 string.sub(s, i [, j])
根据位置截取字符串
print(string.sub("Hello Lua", , ))
print(string.sub("Hello Lua", ))
print(string.sub("Hello Lua", , )) --看到返回什么了吗
print(string.sub("Hello Lua", -, -))
-->output
lo L
ello 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", )) --指明第四个参数
-->output
hello hello hello
hello hello Lua
3、日期时间函数
3.1 os.time ([table])
--地点为北京
print(os.time()) -->output 1438243393 --如果参数为table,那么table中必须含有year、month、day字段。其他字缺省时段默认为中午(12:00:00)
a = { year = , month = , day = , hour = , min = }
print(os.time(a)) -->output 60
3.2 os.difftime (t2, t1)
返回t1到t2的时间差,单位为秒。
local day1 = { year = , month = , day = }
local t1 = os.time(day1)
local day2 = { year = , month = , day = }
local t2 = os.time(day2)
print(os.difftime(t2, t1)) -->output 86400
常用lua代码块的更多相关文章
- !!!常用JS代码块 (jquery)
jquery代码块 <script src="http://code.jquery.com/jquery-1.11.1.min.js"></script> ...
- Android常用功能代码块
1.设置activity无标题,全屏 // 设置为无标题栏 requestWindowFeature(Window.FEATURE_NO_TITLE); // 设置为全屏模式 getWindow(). ...
- Android常用功能代码块(转)
1.设置activity无标题,全屏 // 设置为无标题栏 requestWindowFeature(Window.FEATURE_NO_TITLE); // 设置为全屏模式 getWindow(). ...
- MYSQL列表中常用语句代码块
查看数据表是否存在:SHOW TABLES; 显示已经打开的数据库:SELECT DATABASE(); 查看数据表结构:SHOW COLUMNS FROM ***(数据表名): 插入数据:INSER ...
- !!!常用CSS代码块
图片排满一行.左右两端无间隙. <style type="text/css"> .img_abc{float:left;width:30%;margin-left:5% ...
- iOS常用的代码块整理
strong @property (nonatomic,strong) <#Class#> *<#object#>; weak @property (nonatomic,wea ...
- Lua 学习笔记(七)编译、执行外部代码块
Lua称为解释型语言的原因:Lua允许在运行源代码之前,先将源代码预编译为一种中间形式.区别解释型语言的主要特征是在于编译器是否是语言运行时库的一部分,即有能力执行动态生成的代码.因为Lua中有dof ...
- 关于Hbuild引用mui常用代码块以及部分控件.
MUI-最接近原生APP体验的高性能前端框架, 追求性能体验,是我们开始启动MUI项目的首要目标,轻量必然是重要特征: MUI不依赖任何第三方JS库,压缩后的JS和CSS文件仅有100+K和60+K, ...
- android 一些常用的功能方法代码块
我们这些苦逼的程序员在工作中,每一个老板都希望我们都能把手头的工作做好的,而且是越快越好,那我们要怎么样才能快起来呢?对于开发中常用的代码块无限复做是我们工作中简省时间最有效的途径之一,而下面的这些代 ...
随机推荐
- vue 教程
1.安装 nodejs,检测 nodejs 环境(node -v). 2.安装vue-cli脚手架npm install vue-cli -g 3.在电脑的某个盘中创建项目,之后进入该项目. 4.初始 ...
- html 如何访问 jar 包里面的静态资源(js、css、字体等)
前言:最近两天在尝试写一个工具 jar 包,里面包含后台处理的 java 代码,包含前端 html.js.css.字体文件等,过程中解决了访问 jar 包里的静态资源问题,所以记录下来. 附:自己的一 ...
- JS中的倒计时
一.注:一般倒计时的时间都是后台传来的然后渲染到页面,这里有2个简单的倒计时方式 //带天数的倒计时function countDown(times){ var timer=null; timer=s ...
- 【14】代理模式(Proxy Pattern)
一.引言 在软件开发过程中,有些对象有时候会由于网络或其他的障碍,以至于不能够或者不能直接访问到这些对象,如果直接访问对象给系统带来不必要的复杂性.这时候可以在客户端和目标对象之间增加一层中间层,让代 ...
- python 生成器 和生成器函数 以及各种推导式
一.生成器 本质就是迭代器. 我们可以直接执⾏__next__()来执⾏ 以下⽣成器 一个一个的创建对象 创建生成器的方式: 1.生成器函数 2.通过生成器 表达式来获取生成器 3.类型转换(看 ...
- [WPF 容易忽视的细节] —— Exception in WPF's Converter
前言: 在WPF中,Converter是我们经常要用到的一个工具,因为XAML上绑定的数据不一定是我们需要的数据. 问题: 在Converter中抛出一个异常导致程序崩溃,而且是在对未捕获异常进行集中 ...
- python SMTP 发送邮件
#!/usr/bin/env/python # -*- coding: utf-8 -*- # @Time : 2018/11/19 9:56 # @Author : ChenAdong # @Ema ...
- Python 3前言
Python具有简单.易学.免费.开源.可移植.可扩展.可嵌入.面向对象等优点,它的面向对象甚至比java和C#.net更彻底. 作为一种通用语言,Python几乎可以用在任何领域和场合,角色几乎是无 ...
- LeetCode题解之Remove Nth Node From End of List
1.题目描述 2.问题分析 直接计算,操作. 3.代码 ListNode* removeNthFromEnd(ListNode* head, int n) { if (head == NULL) re ...
- Linux下查看端口,强制kill进程
1.查看8088端口被哪个进程占用:netstat -apn | grep 8088 2.强制kill某一进程:kill -s 9 1827