lua | 运算符与字符串

news2024/11/18 22:44:01

目录

一、运算符 

算数运算符

关系运算符

逻辑运算符

其他运算符

运算符优先级

 二、字符串

转义字符

方法与用途

字符串截取

 字符串大小转换

字符串查找与反转

字符串格式化

字符与整数的转换

匹配模式


本文章为笔者学习分享

学习网站:Lua 基本语法 | 菜鸟教程

一、运算符 

种类:

  • 算术运算符
  • 关系运算符
  • 逻辑运算符
  • 其他运算符

算数运算符

操作符描述
+加法
-减法
*乘法
/除法
%取余
^乘幂
-负号
//整除运算符(5//2=2)

        在 lua 中,/ 用作除法运算,计算结果包含小数部分,// 用作整除运算,计算结果不包含小数部分

关系运算符

操作符描述
==等于
~=不等于
>大于
<小于
>=大于等于
<=小于等于

逻辑运算符

操作符描述
and
or
not逻辑非

其他运算符

操作符描述
..连接两个运算符("hello".."world"="helloword")
#一元运算符#"hello"=5

运算符优先级

 二、字符串

 表示方法:

1.单引号‘

2.双引号”

3.[[ ]]

转义字符

方法与用途

先陈列所有的,具体的使用在下面

 

 

字符串截取

使用sub()方法

string.sub()截取字符串

string.sub(s,i,j) 
--s 要截取的字符串
--i 截取位置开始 
--j 截取位置结束,默认为-1,最后一个字符

-- 字符串
local sourcestr = "prefix--runoobgoogletaobao--suffix"

-- 截取部分,第4个到第15个
local first_sub = string.sub(sourcestr, 4, 15)

-- 取字符串前缀,第1个到第8个
local second_sub = string.sub(sourcestr, 1, 8)
p
-- 截取最后10个
local third_sub = string.sub(sourcestr, -10)

-- 索引越界,输出原始字符串
local fourth_sub = string.sub(sourcestr, -100)

 字符串大小转换

string.upper() 转为大写

string.lower() 转为小写

string1 = "Lua";
print(string.upper(string1)) --LUA
print(string.lower(string1)) --lua

字符串查找与反转

string.find() 查找

string.reverse() 反转

string = "Lua Tutorial"
-- 查找字符串
string.find(string,"Tutorial")
reversedString = string.reverse(string) --lairotuT auL

字符串格式化

string.format() 函数来生成具有特定格式的字符串, 函数的第一个参数是格式 , 之后是对应格式中每个代号的各种数据。

由于格式字符串的存在, 使得产生的长字符串可读性大大提高了。这个函数的格式很像 C 语言中的 printf()。

格式字符串中可能包含以下转义码

  • %c - 接受一个数字, 并将其转化为ASCII码表中对应的字符
  • %d, %i - 接受一个数字并将其转化为有符号的整数格式
  • %o - 接受一个数字并将其转化为八进制数格式
  • %u - 接受一个数字并将其转化为无符号整数格式
  • %x - 接受一个数字并将其转化为十六进制数格式, 使用小写字母
  • %X - 接受一个数字并将其转化为十六进制数格式, 使用大写字母
  • %e - 接受一个数字并将其转化为科学记数法格式, 使用小写字母e
  • %E - 接受一个数字并将其转化为科学记数法格式, 使用大写字母E
  • %f - 接受一个数字并将其转化为浮点数格式
  • %g(%G) - 接受一个数字并将其转化为%e(%E, 对应%G)及%f中较短的一种格式
  • %q - 接受一个字符串并将其转化为可安全被Lua编译器读入的格式
  • %s - 接受一个字符串并按照给定的参数格式化该字符串

为进一步细化格式, 可以在%号后添加参数. 参数将以如下的顺序读入:

  • (1) 符号: 一个+号表示其后的数字转义符将让正数显示正号. 默认情况下只有负数显示符号.
  • (2) 占位符: 一个0, 在后面指定了字串宽度时占位用. 不填时的默认占位符是空格
    • date = 2; month = 1; year = 2014
      print(string.format("日期格式化 %02d/%02d/%03d", date, month, year))
      --02/01/2014
  • (3) 对齐标识: 在指定了字串宽度时, 默认为右对齐, 增加-号可以改为左对齐.
  • (4) 宽度数值
  • (5) 小数位数/字串裁切: 在宽度数值后增加的小数部分n, 若后接 (浮点数转义符, 如%6.3f)则设定该浮点数的小数只保留n位, 若后接 字符串转义符, 如%5.3s)则设定该字符串只显示前n位
    • print(string.format("%.4f",1/3))
      --0.3333

字符与整数的转换

string.char() 将整形数字转为字符并连接

string.byte() 将字符转为整数(可以指定位置)

-- 转换第一个字符
print(string.byte("Lua")) --76
-- 转换第三个字符
print(string.byte("Lua",3)) --97
-- 转换末尾第一个字符
print(string.byte("Lua",-1)) --97
-- 第二个字符
print(string.byte("Lua",2)) --117
-- 转换末尾第二个字符
print(string.byte("Lua",-2)) --117

-- 整数 ASCII 码转换为字符
print(string.char(97)) --a

 

匹配模式

 Lua 中的匹配模式直接用常规的字符串来描述。 它用于模式匹配函数 string.find, string.gmatch, string.gsub, string.match

 可以在模式串中使用字符类。

 字符类指可以匹配一个特定字符集合内任何字符的模式项。比如,字符类 %d 匹配任意数字。所以你可以使用模式串 %d%d/%d%d/%d%d%d%d 搜索 dd/mm/yyyy 格式的日期:

 

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/502834.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

分享三种高效的方法,快速将一个PDF文件分割成两个!

如何将一个PDF分割成两个&#xff1f;PDF文件在学习和工作中都是常用的文件格式&#xff0c;但是有时候我们可能只需要其中的一部分内容&#xff0c;这时候就需要将PDF文件分割成两个或多个。本文将分享三种不同的方法&#xff0c;供大家参考。 一、使用在线工具分割 记灵在线…

设计模式:DDD领域驱动设计

领域 Domain-driven design DDD 强调是说得先把 “领域” 中涉及到的数据、流程、规则等都弄明白了&#xff0c;然后以面向对象的观点为其建立一个模型&#xff08;即领域模型&#xff09;&#xff0c;而这个模型&#xff0c;决定了你将用什么技术、什么架构、什么平台来实现这…

国产仪器 1652A/1652B 函数/任意波形发生器

1652A函数/任意波形发生器采样率2.5GSa/s&#xff0c;垂直分辨率14bits&#xff0c;最高输出频率500MHz&#xff08;直流耦合模式&#xff09;&#xff0c;双通道&#xff0c;存储深度1G点/通道&#xff1b;1652B函数/任意波形发生器采样率5GSa/s&#xff08;插值到10GSa/s&…

【Flink】DataStream API使用之执行环境

1. 执行环境 Flink 程序可以在各种上下文环境中运行&#xff1a;我们可以在本地 JVM 中执行程序&#xff0c;也可以提交 到远程集群上运行。不同的环境&#xff0c;代码的提交运行的过程会有所不同。这就要求我们在提交作业执行计算时&#xff0c;首先必须获取当前 Flink 的运…

【Unity3D插件】动态连线插件CustomWire,使用教程

推荐阅读 CSDN主页GitHub开源地址Unity3D插件分享简书地址我的个人博客 大家好&#xff0c;我是佛系工程师☆恬静的小魔龙☆&#xff0c;不定时更新Unity开发技巧&#xff0c;觉得有用记得一键三连哦。 一、前言 CustomWire插件可以在Unity3D中实现动态连线&#xff0c;将三维…

ADAudit Plus的UEBA功能如何解决企业面临的安全挑战

随着企业信息系统的不断发展和扩大&#xff0c;越来越多的安全威胁开始涌现。从内部员工的误操作到外部黑客的入侵&#xff0c;企业信息系统的安全风险日益增加。为了保护企业的关键数据和业务&#xff0c;企业需要采取一系列的安全措施。而其中一项关键的安全措施是实时监控和…

【BingChat】Microsoft Edge/Bing Chat 注册使用完全指南

欢迎关注【youcans的学习笔记】原创作品&#xff0c;火热更新中 【BingChat】Microsoft Edge/Bing Chat 注册使用完全指南 1. BingChat 简介2. BingChat 用户注册2.1 下载微软浏览器 Edge 预览版2.2 申请微软账户2.3 登录 Bing.com2.4 手机/平板使用 BingChat 3. BingChat 的聊…

P1056 [NOIP2008 普及组] 排座椅

题目描述 上课的时候总会有一些同学和前后左右的人交头接耳&#xff0c;这是令小学班主任十分头疼的一件事情。不过&#xff0c;班主任小雪发现了一些有趣的现象&#xff0c;当同学们的座次确定下来之后&#xff0c;只有有限的 &#xfffd;D 对同学上课时会交头接耳。 同学们…

【OpenSSH】无需公网IP使用SSH远程连接服务器

文章目录 前言视频教程1、安装OpenSSH2、vscode配置ssh3. 局域网测试连接远程服务器4. 公网远程连接4.1 ubuntu安装cpolar内网穿透4.2 创建隧道映射4.3 测试公网远程连接 5. 配置固定TCP端口地址5.1 保留一个固定TCP端口地址5.2 配置固定TCP端口地址5.3 测试固定公网地址远程 转…

家里小孩要去学网络安全,网络安全行业前景到底怎么样?

最近接待了很多学生家长来咨询网络安全学习的问题。 家长们最主要关注三点&#xff1a;什么是网络安全&#xff1f;网络安全行业前景好吗&#xff1f;工资能拿多少&#xff1f;哪些专业什么学历可以学习网络安全&#xff1f; 那么盾叔就来综合解答一下。 什么是网络安全&…

UG NX二次开发(C#)-建模-判断一条曲线是否封闭的方法

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 1、前言2、在UG NX中创建一条不封闭的曲线和一条封闭的曲线3、函数说明4、代码5、测试1、前言 前面有个博客介绍了边UG NX二次开发(C#)-建模-判断一条曲线是不是封闭,但是这个博客是判断边对象是…

Interest-aware Message-Passing GCN for Recommendation(www 21)

论文地址&#xff1a;https://arxiv.org/abs/2102.10044 BACKGROUND GCN信息聚合的模式非常适合推荐&#xff0c;但众所周知在模型设计的时候通常只能堆叠2-3层&#xff0c;再多就会出现过平滑问题&#xff08;结点特征之间没有区分度&#xff09;&#xff0c;LightGCN证明了G…

【是C++,不是C艹】 引用的概念 | 引用的使用 | 引用与指针的区别

&#x1f49e;&#x1f49e;欢迎来到 Claffic 的博客&#x1f49e;&#x1f49e; &#x1f449; 专栏&#xff1a;《是C&#xff0c;不是C艹》&#x1f448; 前言&#xff1a; 前面带大家学习了函数重载等C基础&#xff0c;这期继续C基础的学习&#xff1a;引用。 注&#xff1…

最常用的js混淆加密解

JS混淆加密是一种用于保护JS代码的技术&#xff0c;它能够将代码变得难以理解和修改&#xff0c;从而提高代码的安全性。但是&#xff0c;当我们需要修改和维护这些代码时&#xff0c;我们就会面临困难。因此&#xff0c;在某些情况下&#xff0c;我们需要解这些JS代码。 下面…

新唐NUC980使用记录(5.10.y内核):访问以太网(LAN8720A) 启用SSH

文章目录 目的修改内核和设备树以访问以太网制作根文件系统并启用SSH总结 目的 这篇文章主要测试新唐NUC980&#xff08;5.10.y内核&#xff09;访问以太网&#xff08;PHY为LAN8720A&#xff09;以及启用SSH。 这篇文章中内容均在下面的开发板上进行测试&#xff1a; 《新唐…

【三维几何学习】网格可视化-Cube engraving数据集

网格可视化-Cube engraving数据集 引言一、blender二、meshlab三、3D查看器 引言 三角网格(Triangular Mesh)分类数据集 MeshCNN: A Network with an Edge 可参考以上链接深入了解 or 下载数据集。Cube engraving(论文叫法)数据集&#xff0c;又称为Cubes classification datas…

ClickHouse之Explain查看执行计划

文章目录 前言基本语法EXPLAIN 类型EXPLAIN PLANEXPLAIN ASTEXPLAIN SYNTAXEXPLAIN PIPELINEEXPLAIN ESTIMATE 补充忠告 前言 在 clickhouse 20.6 版本之前要查看 SQL 语句的执行计划需要设置日志级别为 trace 才能 可以看到&#xff0c;并且只能真正执行 sql&#xff0c;在执…

快商通联合创始人李稀敏入选“科技专家库专家名单”

3月10&#xff0c;厦门市科学技术局关于2023年第一批拟入选科技专家库专家名单进行公示。经过层层审核&#xff0c;快商通联合创始人李稀敏入选“科技专家库专家名单”。 据了解&#xff0c;厦门市科学技术局的“科技专家库专家名单”是由市科技局精心挑选的一批优秀专家&…

Unsupervised Domain Adaption (UDA)及domain shift介绍

UDA UDA想解决的问题是目标域上数据标签的缺乏&#xff0c;具体而言&#xff0c;存在着源域和目标域&#xff0c;源域上存在大量的标注样本对 D s { ( X i , y i ) } D_s\{(X_i,y_i)\} Ds​{(Xi​,yi​)}&#xff0c;我们可以在上面以有监督的方式训练各种模型&#xff0c;但此…

常见舆情监测系统的分类和特点

随着网络和社交媒体的发展&#xff0c;舆情监测系统逐渐成为企业和政府机构必备的工具之一。舆情监测系统可以帮助企业和政府机构全面了解公众对其品牌、产品、政策等的反应和态度&#xff0c;及时发现和解决问题&#xff0c;提高公信力和形象。本文将介绍常见的舆情监测系统的…