local tabFiles = {
[1] = "test2",
[6] = "test3",
[4] = "test1"
}
for k, v in ipairs(tabFiles) do --输出"test2",在key等于2处断开
print(k, v)
end
栗子2:
local tabFiles = {
[2] = "test2",
[6] = "test3",
[4] = "test1"
}
for k, v in ipairs(tabFiles) do --[[什么都没输出,为什么?因为控制变量初始值是按升序来遍历的,当key为1时,value为nil,此时便停止了遍历, 所有什么结果都没输出]]--
print(k, v)
end
栗子3:
local tabFiles = {
[2] = "test2",
[6] = "test3",
[4] = "test1"
}
for k, v in pairs(tabFiles) do --输出2 test2, 6 test3, 4 test1
print(k, v)
end
栗子4:
local tabFiles = {"alpha", "beta", [3] = "no", ["two"] = "yes"} for i,v in ipairs(tabFiles ) do --输出前三个 备注:因为第四个key不是整数
print( tabFiles [i] )
end
for i,v in pairs(tabFiles ) do --全部输出
print( tabFiles [i] )
end
2052Lua 迭代器
pairs 和 ipairs区别
pairs: 迭代 table,可以遍历表中所有的 key 可以返回 nil
ipairs: 迭代数组,不能返回 nil,如果遇到 nil 则退出
代码示例:
local tab= {
[1] = "a",
[3] = "b",
[4] = "c"
}
for i,v in pairs(tab) do -- 输出 "a" ,"b", "c" ,
print( tab[i] )
end
for i,v in ipairs(tab) do -- 输出 "a" ,k=2时断开
print( tab[i] )
end
function trim(s)
return (string.gsub(s, "^%s*(.-)%s*$", "%1"))
end
string1 = " facesho "
string2 = trim(string1)
print(string2)
2049Lua 字符串
移除中文部分:
function StrSplit(inputstr, sep)
if sep == nil then
sep = "%s"
end
local t={}
local i=1
for str in string.gmatch(inputstr, "([^"..sep.."]+)") do
t[i] = str
i = i + 1
end
return t
end
local a = "23245023496830,汉字。。。。"
local b = ":"
b = StrSplit(a,",")
print(b[1])
----輸出: 23245023496830
2053Lua 迭代器
pairs 和 ipairs异同
同:都是能遍历集合(表、数组)
异:ipairs 仅仅遍历值,按照索引升序遍历,索引中断停止遍历。即不能返回 nil,只能返回数字 0,如果遇到 nil 则退出。它只能遍历到集合中出现的第一个不是整数的 key。
pairs 能遍历集合的所有元素。即 pairs 可以遍历集合中所有的 key,并且除了迭代器本身以及遍历表本身还可以返回 nil。
栗子1:
栗子2:
栗子3:
栗子4:
2052Lua 迭代器
pairs 和 ipairs区别
代码示例:
2051Lua 字符串
%f 的使用
需求获取特殊边界的字符串。
举例:"123 h123 hds45678 fdaga123ad h123s"
需求:获取左边界为字母,右边界为空格的数字字符串。
1.获取所有带边界的数字串
匹配结果:123 h123 s45678 a123a h123s
确定边界:左:%a 右:%s
2050Lua 字符串
去除字符串首尾的空格
2049Lua 字符串
移除中文部分: