(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数学库相关推荐

  1. python怎么导入math库_Python math数学库的用法

    对于基本的加.减.乘.除等运算,不用引入任何库就可以完成.但是如果要进行求正弦值.求平方根等运算,便需要使用数学库 math. math 库通过下面语句引入: import math 该库包含常用的常 ...

  2. Math数学方法,String字符串型、Date日期

    Math数学方法 Math.PI Π 弧度=Math.PI/180*角度角度=弧度/Math.PI/180; Mat.SQRT1_2 根号2分之一Math.SQRT2 根号2 Math.sin();M ...

  3. JavaScript中的Date日期、String字符串、Array数组、Math提供对数据的数学计算

    一.Date 日期对象 日期对象可以储存任意一个日期,并且可以精确到毫秒数(1/1000 秒). 定义一个时间对象 : var Udate=new Date(); 注意:使用关键字new,Date() ...

  4. Lua基础之math(数学函数库)

    Lua5.1中数学库的所有函数如下表: math.pi 为圆周率常量 = 3.14159265358979323846 abs 取绝对值 math.abs(-15) 15 acos 反余弦函数 mat ...

  5. Lua中的字符串函数库

    Lua解释器对字符串的支持很有限.一个程序可以创建字符串并连接字符串,但不能截取子串,检查字符串的大小,检测字符串的内容.在Lua中操纵字符串的功能基本来自于string库. 字符串库中的一些函数是非 ...

  6. math.js:灵活强大的JavaScript数学库

    最近为期权开发一些基本技术指标,用到一些C++的数学库,刚好看到JavaScript的math.js库,这里对math.js做一下简单介绍. 一.什么是math.js math.js是一个广泛应用于J ...

  7. JavaScript内置对象→对象、系统函数、Date日期对象、String字符串对象、Math对象、Number数字对象、Object对象、Boolean对象、Error对象

    对象 系统函数 Date日期对象 String字符串对象 Math对象 Number数字对象 Object对象 Boolean对象 Error对象

  8. [转载] [python标准库]math——数学函数

    参考链接: Python数学库| expm1()方法 [python标准库]math--数学函数         作用:提供函数完成特殊的数学运算.         Python 版本:1.4 及以后 ...

  9. python之String字符串处理库,文件/目录,日期和时间

    目录 一,String字符串处理库 1,查找 案例 python中,检查s = 'jack love rose,im rose'中是否有rose ①find() ②rfind() 注意:因为find找 ...

最新文章

  1. spring boot 项目源码_Spring Boot2 系列教程(三)理解 Spring Boot 项目中的 parent
  2. scipy.linalg.norm 线性代数运算 API
  3. SpringCloud实战5-Feign声明式服务调用
  4. 管家病毒查杀模块逆向分析
  5. SAP UI5 debug mode
  6. jzoj5986. 【WC2019模拟2019.1.4】立体几何题 (权值线段树)
  7. 数据持久化,序列化,反序列化,文件读写1
  8. 基于asterisk/freewitch的webrtc电话
  9. java 中国标准时间_「标准时间」js代码,中国标准时间转换为yyyy-MM-dd - seo实验室...
  10. android屏幕适配无效_Android 屏幕适配终结者
  11. 吃货在东京 -- 记那段吃不饱的日子 之二 丰州的雪花牛肉
  12. 深度定制游戏引擎实现云服务器的非线性增长
  13. excel多列合并关联数据
  14. elementui el-dialog 离顶部的位置_人眼距离屏幕合适位置该怎么算?
  15. [20150818]模拟wan网络延迟.txt
  16. 关于《那些年啊,那些事——一个程序员的奋斗史》的更新
  17. 微信小程序调用weUI库
  18. ●●●观世音菩萨●●●
  19. 离散数学真值表(c语言编程实现),C语言 实现离散数学合式公式真值表
  20. 怎样在ZBrush中快速绘制人体躯干

热门文章

  1. 智能驾驶 车牌检测和识别(二)《YOLOv5实现车牌检测(含车牌检测数据集和训练代码)》
  2. Win10任务栏程序设置显示最近使用项
  3. [J2SE]java电子词典LocalDictionary多功能版
  4. 尚硅谷大数据技术Zookeeper教程-笔记01【Zookeeper(入门、本地安装、集群操作)】
  5. 分享最新的autohotkey快捷键代码,不知不觉中写了2千行.
  6. SGM4808YTQA16G/TR
  7. 判断一个用字符串表达的数字是否可以被整除
  8. 百度信息流流量优化白皮书
  9. 非线性光纤光学_北京大学刘忠范院士/刘开辉教授等《自然·纳米技术》:光纤内二维材料的均匀生长实现超高非线性...
  10. 第一次面试实习-Web前端开发