lua字符串与表的使用

xiaoxiao2021-02-28  10

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 ]]
转载请注明原文地址: https://www.6miu.com/read-2650200.html

最新回复(0)