Lua字符串对象
1:字符串加法:
(1)“str1” .. “str2” (2)字符串与数相加;
2: 数字转字符串:
local a = 10; a = “” .. a; tostring(number)
字符串转数字:
tonumber(“字符串”)
3: 字符串接口:
string.len(): 字符串的字节数
string.rep(s, n) : 返回重复n次字符串s的串
string.lower(s): 将大写全部都转成小写;
string.upper(s): 将小写转为大写;
string.sub(s,i,j): 从第i个到第j个之间的字符串,和其他的不一样,索引从1开始不是从0开始;
string.format(); 和C语言printf一样,格式化输出数据;
string.find: 子串查找函数;
string.gsub: 字符串替换函数, string.gsub("hello", "l", "n", 1); 替换的个数
格式化转义码
%c - 接受一个数字, 并将其转化为ASCII码表中对应的字符%d, %i - 接受一个数字并将其转化为有符号的整数格式%o - 接受一个数字并将其转化为八进制数格式%u - 接受一个数字并将其转化为无符号整数格式%x - 接受一个数字并将其转化为十六进制数格式, 使用小写字母%X - 接受一个数字并将其转化为十六进制数格式, 使用大写字母%e - 接受一个数字并将其转化为科学记数法格式, 使用小写字母e%E - 接受一个数字并将其转化为科学记数法格式, 使用大写字母E%f - 接受一个数字并将其转化为浮点数格式%g(%G) - 接受一个数字并将其转化为%e(%E, 对应%G)及%f中较短的一种格式%q - 接受一个字符串并将其转化为可安全被Lua编译器读入的格式%s - 接受一个字符串并按照给定的参数格式化该字符串
表
1: Lua没有数组,但是表可以代替数组的功能(数组部分与非数组部分); Lua表的数组部分的索引是从1开始的, 1, 2, 3 ...称连续的索引; Lua表的连续索引的长度(数组部分); #表的名字; Lua表支持key, value模式; 4: 遍历lua表; for i=1, #(tbtest) do end for key, value in ipairs(tbtest) do --连续部分 end for key, value in pairs(tbtest) do --Hash排序 end
表的接口
1: table.insert(table, pos, value):
在table的数组部分指定位置(pos)插入值为value的一个元素, pos参数可选, 默认为数组部分末尾
2: table.remove(table, pos)
函数删除并返回table数组部分位于pos位置的元素. 其后的元素会被前移. pos参数可选, 默认为table长度, 即从最后一个元素删起
3: table.sort(table, 比较函数): 对table进行排序
4: table.getn(table)返回表中元素的个数; -->数组部分
-- 字符串相加使用 ..
local lhs_str =
"Hello"
local rhs_str =
" World!!!"
local str = lhs_str .. rhs_str
print(str)
-- 字符串和基本数据相加
print(lhs_str ..
8)
-- 数字转字符串
local value =
7
print(
"" .. value)
-- 字符串转数字
print(
tonumber(
"9.6"))
--常用字符串接口
str =
"helloworld!!!"
print(
string.len(str))
str =
string.rep(
"hello",
3)
--重复
print(str)
str =
"AJFJKEJFE!!!"
--大写转小写
str =
string.lower(str)
print(str)
str =
string.upper(str)
--小写转大写
print(str)
str =
string.sub(
"helloworld",
2,
5)
--截取字符串 从2开始到5, 索引是从1开始
print(str)
-- 格式化输出
local date =
string.format(
"%d-%d-%d",
2018,
05,
19)
print(date)
--查找
str =
"helloworld"
local index =
string.find(str,
"world")
--查找字符串开始的索引位置,索引从1开始,不是从0开始的
print(index)
--字符串替换
str =
"helloowlld"
str =
string.gsub(str,
"ll",
"ww")
print(str)
--字符串替换
str =
"helloowlld"
str =
string.gsub(str,
"ll",
"ww",
1)
--第4个参数,是替换几个,如果没有指定就是替换全部
print(str)
---表 lua表代替数组
print(
"---------------------------------")
print(
"---------------------------------")
-- 数组部分, 索引从1开始(lua特色)
local list_table = {
1,
2,
3,
4,
5}
print(list_table[
1],list_table[
2],list_table[
3])
list_table[
11] =
11
list_table.
test_key =
"test_value"
print(#list_table)
--返回lua表里面数组部分的长度 ,必须要求索引是连续的
print(list_table[
11])
print(list_table[
"test_key"])
print(
"---------------------------------")
print(
"---------------------------------")
--遍历lua表里面所有元素
--遍历lua里面数组部分的元素
local index =
1
for index =
1, #list_table
do
print(list_table[index])
end
print(
"##############")
local k,v
for k,v
in
ipairs(list_table)
do
print(k,v)
end
--end
print(
"##############")
--遍历表里里面所有的数据
for k,v
in
pairs(list_table)
do
print(k,v)
end
--end
--数组一定是连续的整数索引,否则就不算数组
-- 表的接口
table.insert(list_table,
8)
--数组插入数据
--如果不指定pos就插入到数组部分的尾部
table.insert(list_table,
2,
8)
--往指定位置插入数据
table.remove(list_table,
2)
--删除第二个位置
for k,v
in
pairs(list_table)
do
print(k,v)
end
print(
"##############")
print(table.
getn(list_table))
--返回表里数组的元素个数,和#功能是类似的
print(
"##############")
--对表进行排序
local array_data = {
3,
2,
5,
7,
9,
6}
table.sort(array_data)
for k,v
in
pairs(array_data)
do
print(k,v)
end
--使用自己的比较函数进行排序
local
function
coml(
lhs,
rhs)
if lhs < rhs
then
return
false
else
return
true
end
end
print(
"##############")
table.sort(array_data,coml)
--自定义排序函数
for k,v
in
pairs(array_data)
do
print(k,v)
end
-- 随机的打乱一个数组
-- lua排序中的比较函数要保证排序的稳定性
--[[
local function cmp_random(lhs,rhs)
local v = math.random()
if tonumber(v) < 0.5 then
return true
else
return false
end
end
print("##############")
table.sort(array_data,cmp_random) --随机排序
for k,v in pairs(array_data) do
print(k,v)
end
]]