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) -- 就替换了一次