(1)string字符串
1、字符串连接符".."
使用".."符号可以将两个字符串相连接,等价于C#或Java中的string a + string b,如果“..”两边有一个是数字的话,".."操作符会把数字变成字符串
输出
2、Lua的字符串包含string库,可以借助string库函数来便捷地使用string
输出
3、模式
模式(pattern)是用来替代一种指定集合的分类,比如在c语言中常见的scanf("%d",&a)、printf("%d\n",a)中的"%d"就是一种模式,在程序进行编译时它用于替代所有的int类型。
常用的几种模式
.
|
所有字符
|
%a
|
字母
|
%c
|
控制字符
|
%d
|
数字
|
%l
|
小写字母
|
%p
|
标点符号
|
%s
|
空白字符(也可以是字符串)
|
%u
|
大写字母
|
%w
|
字母和数字字符
|
%x
|
十六进制数字
|
%z
|
内部表示为0的字符
|
除了这些分类,还有大写字母的分类,大写字母的分类表示了上述分类的补集。
%A
|
非字母
|
%C
|
非控制字符
|
%D
|
非数字
|
%L
|
非小写字母
|
%P
|
非标点符号
|
%S
|
非空白字符
|
%U
|
非大写字母
|
%W
|
非字母和数字字符
|
%X
|
非十六进制数字
|
%Z
|
内部不表示为0的字符
|
举些例子
输出(第二行的"12"是gsub方法的第二个返回值,表示替换了12次)
除了上面两个分类,还有一些,它们被称作魔法字符
%(
|
字符'('
|
%)
|
字符')'
|
%.
|
字符'.'
|
%%
|
字符'%'
|
%+
|
字符'+'
|
%-
|
字符'-'
|
%*
|
字符'*'
|
%?
|
字符'?'
|
%[
|
字符'['
|
%]
|
字符']'
|
%^
|
字符'^'
|
%$
|
字符'$'
|
示例
输出
4、模式扩展1-字符集
字符集实际上是模式的扩展,在一对方括号内将不同的字符分类或单个字符组合起来,即可创建出属于用户自己的字符分类,这种新的字符分类就是字符集(lua的设计还是相当强大的)。比如字符集"[%a_]"表示同时匹配字母、下划线;字符集"[0-1]"表示匹配二进制数字;字符集"[0-7]"表示匹配八进制数字;字符集"[^0-7]"表示匹配非八进制数字。
示例
输出
5、模式扩展2-修饰符
lua提供4中修饰符来配合模式使用
+
|
重复1次或多次
|
*
|
重复0次或多次
|
-
|
重复0次或多次
|
?
|
出现0次或1次
|
比如"+"修饰符可以匹配属于字符分类的一个或多个字符。它总是获取与模式相匹配的最长序列。
示例
输出
6、string库表
string库表参考自http://blog.sina.com.cn/s/blog_6d9d6d160101975u.html
【基本函数】
函数
|
描述
|
示例
|
结果
|
len
|
计算字符串长度
|
string.len("abcd")
|
4
|
rep
|
返回字符串s的n个拷贝
|
string.rep("abcd",2)
|
abcdabcd
|
lower
|
返回字符串全部字母大写
|
string.lower("AbcD")
|
abcd
|
upper
|
返回字符串全部字母小写
|
string.upper("AbcD")
|
ABCD
|
format
|
返回一个类似printf的格式化字符串
|
string.format("the value is:%d",4)
|
the value is:4
|
sub
|
returns substring from index i to j of s
|
string.sub("abcd",2)
|
bcd
|
string.sub("abcd",-2)
|
cd
|
string.sub("abcd",2,-2)
|
bc
|
string.sub("abcd",2,3)
|
bc
|
find
|
在字符串中查找
|
string.find("cdcdcdcd","ab")
|
nil
|
string.find("cdcdcdcd","cd")
|
1 2
|
string.find("cdcdcdcd","cd",7)
|
7 8
|
gsub
|
在字符串中替换
|
string.gsub("abcdabcd","a","z");
|
zbcdzbcd 2
|
string.gsub("aaaa","a","z",3);
|
zzza 3
|
byte
|
返回字符的整数形式
|
string.byte("ABCD",4)
|
68
|
char
|
将整型数字转成字符并连接
|
string.char(97,98,99,100)
|
abcd
|
--------------------------------------------------------------------------------------------------
【基本模式串】
字符类
|
描述
|
示例
|
结果
|
.
|
任意字符
|
string.find("",".")
|
nil
|
%s
|
空白符
|
string.find("ab cd","%s%s")
|
3 4
|
%S
|
非空白符
|
string.find("ab cd","%S%S")
|
1 2
|
%p
|
标点字符
|
string.find("ab,.cd","%p%p")
|
3 4
|
%P
|
非标点字符
|
string.find("ab,.cd","%P%P")
|
1 2
|
%c
|
控制字符
|
string.find("abcd\t\n","%c%c")
|
5 6
|
%C
|
非控制字符
|
string.find("\t\nabcd","%C%C")
|
3 4
|
%d
|
数字
|
string.find("abcd12","%d%d")
|
5 6
|
%D
|
非数字
|
string.find("12abcd","%D%D")
|
3 4
|
%x
|
十六进制数字
|
string.find("efgh","%x%x")
|
1 2
|
%X
|
非十六进制数字
|
string.find("efgh","%X%X")
|
3 4
|
%a
|
字母
|
string.find("AB12","%a%a")
|
1 2
|
%A
|
非字母
|
string.find("AB12","%A%A")
|
3 4
|
%l
|
小写字母
|
string.find("ABab","%l%l")
|
3 4
|
%L
|
大写字母
|
string.find("ABab","%L%L")
|
1 2
|
%u
|
大写字母
|
string.find("ABab","%u%u")
|
1 2
|
%U
|
非大写字母
|
string.find("ABab","%U%U")
|
3 4
|
%w
|
字母和数字
|
string.find("a1()","%w%w")
|
1 2
|
%W
|
非字母非数字
|
string.find("a1()","%W%W")
|
3 4
|
--------------------------------------------------------------------------------------------------
【转义字符%】
字符类
|
描述
|
示例
|
结果
|
%
|
转义字符
|
string.find("abc%..","%%")
|
4 4
|
string.find("abc..d","%.%.")
|
4 5
|
--------------------------------------------------------------------------------------------------
【用[]创建字符集,"-"为连字符,"^"表示字符集的补集】
字符类
|
描述
|
示例
|
结果
|
[01]
|
匹配二进制数
|
string.find("32123","[01]")
|
3 3
|
[AB][CD]
|
匹配AC、AD、BC、BD
|
string.find("ABCDEF","[AB][CD]")
|
2 3
|
[[]]
|
匹配一对方括号[]
|
string.find("ABC[]D","[[]]")
|
4 5
|
[1-3]
|
匹配数字1-3
|
string.find("312","[1-3][1-3][1-3]")
|
1 3
|
[b-d]
|
匹配字母b-d
|
string.find("dbc","[b-d][b-d][b-d]")
|
1 3
|
[^%s]
|
匹配任意非空字符
|
string.find(" a ","[^%s]")
|
3 3
|
[^%d]
|
匹配任意非数字字符
|
string.find("123a","[^%d]")
|
4 4
|
[^%a]
|
匹配任意非字母字符
|
string.find("abc1","[^%a]")
|
4 4
|
--------------------------------------------------------------------------------------------------
【用"()"进行捕获】
字符类
|
描述
|
示例
|
结果
|
()
|
捕获字符串
|
string.find("12ab","(%a%a)")
|
3 4 ab
|
string.find("ab12","(%d%d)")
|
3 4 12
|
--------------------------------------------------------------------------------------------------
【模式修饰符】
修饰符
|
描述
|
示例
|
结果
|
+
|
表示1个或多个,匹配最多个
|
string.find("aaabbb","(a+b)")
|
1 4 aaab
|
string.find("cccbbb","(a+b)")
|
nil
|
-
|
表示0个或多个,匹配最少个
|
string.find("zzxyyy","(xy-)")
|
3 3 x
|
string.find("zzzyyy","(x-y)")
|
4 4 y
|
*
|
表示0个或多个,匹配最多个
|
string.find("mmmnnn","(m*n)")
|
1 4 mmmb
|
string.find("lllnnn","(m*n)")
|
4 4 n
|
?
|
表示0个或1个
|
string.find("aaabbb","(a?b)")
|
3 4 ab
|
string.find("cccbbb","(a?b)")
|
4 4 b
|
(2)math库
math库参考自http://blog.sina.com.cn/s/blog_61dfab6b01015qh4.html
函数名
|
描述
|
示例
|
结果
|
pi
|
圆周率
|
math.pi
|
3.1415926535898
|
abs
|
取绝对值
|
math.abs(-2012)
|
2012
|
ceil
|
向上取整
|
math.ceil(9.1)
|
10
|
floor
|
向下取整
|
math.floor(9.9)
|
9
|
max
|
取参数最大值
|
math.max(2,4,6,8)
|
8
|
min
|
取参数最小值
|
math.min(2,4,6,8)
|
2
|
pow
|
计算x的y次幂
|
math.pow(2,16)
|
65536
|
sqrt
|
开平方
|
math.sqrt(65536)
|
256
|
mod
|
取模
|
math.mod(65535,2)
|
1
|
modf
|
取整数和小数部分
|
math.modf(20.12)
|
20 0.12
|
randomseed
|
设随机数种子
|
math.randomseed(os.time())
|
|
random
|
取随机数
|
math.random(5,90)
|
5~90
|
rad
|
角度转弧度
|
math.rad(180)
|
3.1415926535898
|
deg
|
弧度转角度
|
math.deg(math.pi)
|
180
|
exp
|
e的x次方
|
math.exp(4)
|
54.598150033144
|
log
|
计算x的自然对数
|
math.log(54.598150033144)
|
4
|
log10
|
计算10为底,x的对数
|
math.log10(1000)
|
3
|
frexp
|
将参数拆成x * (2 ^ y)的形式
|
math.frexp(160)
|
0.625 8
|
ldexp
|
计算x * (2 ^ y)
|
math.ldexp(0.625,8)
|
160
|
sin
|
正弦
|
math.sin(math.rad(30))
|
0.5
|
cos
|
余弦
|
math.cos(math.rad(60))
|
0.5
|
tan
|
正切
|
math.tan(math.rad(45))
|
1
|
asin
|
反正弦
|
math.deg(math.asin(0.5))
|
30
|
acos
|
反余弦
|
math.deg(math.acos(0.5))
|
60
|
atan
|
反正切
|
math.deg(math.atan(1))
|
45
|
lua(3)-string字符串math数学库相关推荐
- python怎么导入math库_Python math数学库的用法
对于基本的加.减.乘.除等运算,不用引入任何库就可以完成.但是如果要进行求正弦值.求平方根等运算,便需要使用数学库 math. math 库通过下面语句引入: import math 该库包含常用的常 ...
- Math数学方法,String字符串型、Date日期
Math数学方法 Math.PI Π 弧度=Math.PI/180*角度角度=弧度/Math.PI/180; Mat.SQRT1_2 根号2分之一Math.SQRT2 根号2 Math.sin();M ...
- JavaScript中的Date日期、String字符串、Array数组、Math提供对数据的数学计算
一.Date 日期对象 日期对象可以储存任意一个日期,并且可以精确到毫秒数(1/1000 秒). 定义一个时间对象 : var Udate=new Date(); 注意:使用关键字new,Date() ...
- Lua基础之math(数学函数库)
Lua5.1中数学库的所有函数如下表: math.pi 为圆周率常量 = 3.14159265358979323846 abs 取绝对值 math.abs(-15) 15 acos 反余弦函数 mat ...
- Lua中的字符串函数库
Lua解释器对字符串的支持很有限.一个程序可以创建字符串并连接字符串,但不能截取子串,检查字符串的大小,检测字符串的内容.在Lua中操纵字符串的功能基本来自于string库. 字符串库中的一些函数是非 ...
- math.js:灵活强大的JavaScript数学库
最近为期权开发一些基本技术指标,用到一些C++的数学库,刚好看到JavaScript的math.js库,这里对math.js做一下简单介绍. 一.什么是math.js math.js是一个广泛应用于J ...
- JavaScript内置对象→对象、系统函数、Date日期对象、String字符串对象、Math对象、Number数字对象、Object对象、Boolean对象、Error对象
对象 系统函数 Date日期对象 String字符串对象 Math对象 Number数字对象 Object对象 Boolean对象 Error对象
- [转载] [python标准库]math——数学函数
参考链接: Python数学库| expm1()方法 [python标准库]math--数学函数 作用:提供函数完成特殊的数学运算. Python 版本:1.4 及以后 ...
- python之String字符串处理库,文件/目录,日期和时间
目录 一,String字符串处理库 1,查找 案例 python中,检查s = 'jack love rose,im rose'中是否有rose ①find() ②rfind() 注意:因为find找 ...
最新文章
- spring boot 项目源码_Spring Boot2 系列教程(三)理解 Spring Boot 项目中的 parent
- scipy.linalg.norm 线性代数运算 API
- SpringCloud实战5-Feign声明式服务调用
- 管家病毒查杀模块逆向分析
- SAP UI5 debug mode
- jzoj5986. 【WC2019模拟2019.1.4】立体几何题 (权值线段树)
- 数据持久化,序列化,反序列化,文件读写1
- 基于asterisk/freewitch的webrtc电话
- java 中国标准时间_「标准时间」js代码,中国标准时间转换为yyyy-MM-dd - seo实验室...
- android屏幕适配无效_Android 屏幕适配终结者
- 吃货在东京 -- 记那段吃不饱的日子 之二 丰州的雪花牛肉
- 深度定制游戏引擎实现云服务器的非线性增长
- excel多列合并关联数据
- elementui el-dialog 离顶部的位置_人眼距离屏幕合适位置该怎么算?
- [20150818]模拟wan网络延迟.txt
- 关于《那些年啊,那些事——一个程序员的奋斗史》的更新
- 微信小程序调用weUI库
- ●●●观世音菩萨●●●
- 离散数学真值表(c语言编程实现),C语言 实现离散数学合式公式真值表
- 怎样在ZBrush中快速绘制人体躯干
热门文章
- 智能驾驶 车牌检测和识别(二)《YOLOv5实现车牌检测(含车牌检测数据集和训练代码)》
- Win10任务栏程序设置显示最近使用项
- [J2SE]java电子词典LocalDictionary多功能版
- 尚硅谷大数据技术Zookeeper教程-笔记01【Zookeeper(入门、本地安装、集群操作)】
- 分享最新的autohotkey快捷键代码,不知不觉中写了2千行.
- SGM4808YTQA16G/TR
- 判断一个用字符串表达的数字是否可以被整除
- 百度信息流流量优化白皮书
- 非线性光纤光学_北京大学刘忠范院士/刘开辉教授等《自然·纳米技术》:光纤内二维材料的均匀生长实现超高非线性...
- 第一次面试实习-Web前端开发