当前位置: 首页 > news >正文

cocos2d-x -Lua 字符串

字符串或串(String)是由数字、字母、下划线组成的一串字符。

Lua 语言中字符串可以使用以下三种方式来表示:

  • 单引号间的一串字符。
  • 双引号间的一串字符。
  • [[和]]间的一串字符。

以上三种方式的字符串实例如下:

string1 = "Lua"
print("\"字符串 1 是\"",string1) string2 = 'w3cschool.cc' print("字符串 2 是",string2) string3 = [["Lua 教程"]] print("字符串 3 是",string3)

以上代码执行输出结果为:

"字符串 1 是"	Lua
字符串 2  w3cschool.cc 字符串 3  "Lua 教程"

转义字符用于表示不能直接显示的字符,比如后退键,回车键,等。如在字符串转换双引号可以使用 "\""。

所有的转义字符和所对应的意义:

转义字符
意义
ASCII码值(十进制)
\a
响铃(BEL)
007
\b
退格(BS) ,将当前位置移到前一列
008
\f
换页(FF),将当前位置移到下页开头
012
\n
换行(LF) ,将当前位置移到下一行开头
010
\r
回车(CR) ,将当前位置移到本行开头
013
\t
水平制表(HT) (跳到下一个TAB位置)
009
\v
垂直制表(VT)
011
\\
代表一个反斜线字符''\'
092
\'
代表一个单引号(撇号)字符
039
\"
代表一个双引号字符
034
\0
空字符(NULL)
000
\ddd
1到3位八进制数所代表的任意字符
三位八进制
\xhh
1到2位十六进制所代表的任意字符
二位十六进制

字符串操作

Lua 提供了很多的方法来支持字符串的操作:

序号方法 & 用途
1string.upper(argument):
字符串全部转为大写字母。
2string.lower(argument):
字符串全部转为小写字母。
3string.gsub(mainString,findString,replaceString,num)
在字符串中替换,mainString为要替换的字符串, findString 为被替换的字符,replaceString 要替换的字符,num 替换次数(可以忽略,则全部替换),如:
> string.gsub("aaaa","a","z",3); zzza 3
4string.strfind (str, substr, [init, [end]])
在一个指定的目标字符串中搜索指定的内容(第三个参数为索引),返回其具体位置。不存在则返回 nil。
> string.find("Hello Lua user", "Lua", 1) 7 9
5string.reverse(arg)
字符串反转
> string.reverse("Lua") auL
6string.format(...)
返回一个类似printf的格式化字符串
> string.format("the value is:%d",4) the value is:4
7string.char(arg) 和 string.byte(arg[,int])
char 将整型数字转成字符并连接, byte 转换字符为整数值(可以指定某个字符,默认第一个字符)。
> string.char(97,98,99,100) abcd > string.byte("ABCD",4) 68 > string.byte("ABCD") 65 >
8string.len(arg)
计算字符串长度。
string.len("abc") 3
9string.rep(string, n))
返回字符串string的n个拷贝
> string.rep("abcd",2) abcdabcd
10..
链接两个字符串
> print("www.w3cschool".."cc") www.w3cschoolcc

字符串大小写转换

以下实例演示了如何对字符串大小写进行转换:

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

以上代码执行结果为:

LUA
lua

字符串查找与反转

以下实例演示了如何对字符串进行查找与反转操作:

string = "Lua Tutorial" -- 查找字符串 print(string.find(string,"Tutorial")) reversedString = string.reverse(string) print("新字符串为",reversedString)

以上代码执行结果为:

5	12
新字符串为 lairotuT auL

字符串格式化

以下实例演示了如何对字符串进行格式化操作:

string1 = "Lua"
string2 = "Tutorial" number1 = 10 number2 = 20 -- 基本字符串格式化 print(string.format("基本格式化 %s %s",string1,string2)) -- 日期格式化 date = 2; month = 1; year = 2014 print(string.format("日期格式化 %02d/%02d/%03d", date, month, year)) -- 十进制格式化 print(string.format("%.4f",1/3))

以上代码执行结果为:

基本格式化 Lua Tutorial 日期格式化 02/01/2014 0.3333

字符与整数相互转换

以下实例演示了字符与整数相互转换:

-- 字符转换
-- 转换第一个字符 print(string.byte("Lua")) -- 转换第三个字符 print(string.byte("Lua",3)) -- 转换末尾第一个字符 print(string.byte("Lua",-1)) -- 第二个字符 print(string.byte("Lua",2)) -- 转换末尾第二个字符 print(string.byte("Lua",-2)) -- 整数 ASCII 码转换为字符 print(string.char(97))

以上代码执行结果为:

76
97
97 117 117 a

其他常用函数

以下实例演示了其他字符串操作,如计算字符串长度,字符串连接,字符串复制等:

string1 = "www."
string2 = "w3cschool" string3 = ".cc" -- 使用 .. 进行字符串连接 print("连接字符串",string1..string2..string3) -- 字符串长度 print("字符串长度 ",string.len(string2)) -- 字符串复制 2  repeatedString = string.rep(string2,2) print(repeatedString)

以上代码执行结果为:

连接字符串	www.w3cschool.cc 字符串长度 9 w3cschoolw3cschool

转载于:https://www.cnblogs.com/luorende/p/6369776.html

相关文章:

  • [系统资源攻略]IO第一篇-磁盘IO,内核IO概念
  • 深入理解CSS中的margin
  • 有哪些話让你看了一遍就再也没有忘记?
  • 搭建nlp_server服务器
  • 修身
  • android classloader双亲委托模式
  • 手机号中间四位加星号
  • UISearchBar使用及修改样式
  • 关于api-ms-win-crt-runtimel1-1-0.dll缺失的解决方案
  • Android 高德地图入门详解
  • JavaScript操作符
  • Runtime学习笔记
  • windows 下 TCP 端口转发
  • 2017大数据标准化论坛发布了第一批大数据系统测试结果,阿里云数加获得了大数据系统测试证书。...
  • idea java.lang.OutOfMemoryError: PermGen space
  • [译] 理解数组在 PHP 内部的实现(给PHP开发者的PHP源码-第四部分)
  • 【vuex入门系列02】mutation接收单个参数和多个参数
  • 2018以太坊智能合约编程语言solidity的最佳IDEs
  • Eureka 2.0 开源流产,真的对你影响很大吗?
  • js中的正则表达式入门
  • oldjun 检测网站的经验
  • OpenStack安装流程(juno版)- 添加网络服务(neutron)- controller节点
  • PHP 使用 Swoole - TaskWorker 实现异步操作 Mysql
  • rabbitmq延迟消息示例
  • windows下mongoDB的环境配置
  • 复杂数据处理
  • 给第三方使用接口的 URL 签名实现
  • 什么软件可以剪辑音乐?
  • 数组的操作
  • 王永庆:技术创新改变教育未来
  • 小而合理的前端理论:rscss和rsjs
  • 《天龙八部3D》Unity技术方案揭秘
  • HanLP分词命名实体提取详解
  • 支付宝花15年解决的这个问题,顶得上做出十个支付宝 ...
  • ​一、什么是射频识别?二、射频识别系统组成及工作原理三、射频识别系统分类四、RFID与物联网​
  • ​用户画像从0到100的构建思路
  • # .NET Framework中使用命名管道进行进程间通信
  • # 20155222 2016-2017-2 《Java程序设计》第5周学习总结
  • #ifdef 的技巧用法
  • #我与Java虚拟机的故事#连载11: JVM学习之路
  • ${factoryList }后面有空格不影响
  • (3)llvm ir转换过程
  • (4)事件处理——(7)简单事件(Simple events)
  • (C语言)strcpy与strcpy详解,与模拟实现
  • (JS基础)String 类型
  • (Redis使用系列) Springboot 实现Redis消息的订阅与分布 四
  • (板子)A* astar算法,AcWing第k短路+八数码 带注释
  • (办公)springboot配置aop处理请求.
  • (附源码)springboot家庭财务分析系统 毕业设计641323
  • (附源码)springboot家庭装修管理系统 毕业设计 613205
  • (附源码)计算机毕业设计ssm基于B_S的汽车售后服务管理系统
  • (十)T检验-第一部分
  • . NET自动找可写目录
  • .bashrc在哪里,alias妙用
  • .dwp和.webpart的区别