Lua的string学习笔记

1.字符转换成数字   使用tonumber(类似c里面的atoi)

myStr = "6"
myNum = tonumber(myStr)
print(myNum)

2.数字转换成字符窜    使用tostring (类似c里面的itoa)

myNum = 8
myStr = tostring(myNum)
print(myStr)
print(type(myStr))  --type()可以输出变量类型

3.根据ASCII编码返回传入参数对应的字符,string.char(...)

a = string.char(0x31,0x32,0x41)
print(a) --"12A"

4.返回字符窜的长度  string.len() 

str = "hello world"
print(string.len(str))

5.根据指定起始位置来剪切一个字符窜,string.sub(String, nStart, nEnd)
str = "hello world"
newStr = string.sub(str,3,5)
print(newStr) --  "llo"

假如现在我想取到一个字符窜的后面3个字符,那么我可以这样来做

str = "hello world"
newStr = string.sub(str,-3,string.len(str))
print(newStr) --"rld"

或者你可以用一种更简单的方法,直接省去nEnd这个参数,效果都是一样的。


6.string.fomat()  用于字符窜拼接(类似于sprintf)

string1 = "hello"
string2 = "world"
num = 123
print(string.format("%s %d %s",string1,num,string2)) --"hello 123 world"
 

7.string.find()

local str = "hello"
local i,j = string.find(str, "hello")  -- 返回hello在str的起始位置和终止位置
print(i, j)
--如果没有匹配到则返回nil
还可以这样用:
string.find函数具有一个第三参数,他是一个索引,告诉函数应该从目标字符窜的哪里开始搜索.

使用正则
local str = "hello123world"
local i,j = string.find(str, "%d+")
print(i, j) --6  8

8.match()

注意:返回的是目标字符窜与模式相匹配的那个部分,并不是位置。也就是说返回的还是一个字符窜
local str = "liuxinxia123456789hahahah"
subStr = string.match(str, "%d+")
print(subStr) --123456789


local i, j =string.find(str, "%d+")
subStr =string.sub(str, i, j)  --  确定起始位置  返回一个字符窜
print(subStr)

9.gsub()

string.gsub有3个参数:目标字符串、模式和替换字符串。它的基本用法是将目标字符串中所有出现模式的地方替换为目标字符串。来看一段简短的代码,就什么都明白了。

local str = "Hello World"
local strResult = string.gsub(str, "Hello", "Jelly")
print(strResult) -- Jelly World

另外gsub还有可选的第四个参数,可以限制替换的次数。示例代码如下:

local str = "Hello World"

-- 这里不限制替换次数
local strResult, cnt = string.gsub(str, "l", "o")
print(strResult) -- Heooo Worod
print(cnt) -- 实际替换的次数

-- 开始限制替换次数
strResult, cnt = string.gsub(str, "l", "o", 1)
print(strResult) -- Heolo World
print(cnt) -- 就替换了一次




  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值