最近有空空闲 整理点东西吧
相信这个在游戏脚本里有那么一点点用处
1.先来个简单的
-------------------------------------------------
--功能:字符串按格式的分解
--输入:字符串,格式符号
--输出:分割好的字符串table
function trimstr(str, c)
local t={}
if nil~=str then
local s=string.gsub(str, "^%s*(.-)%s*$", "%1") --去除字符串首尾的空格
if nil==string.find(c, " ") then --分隔符不为空格
local strtmp=string.gsub(s, " ", "") --消除所有空格
local strall=string.gsub(strtmp, c, " ") --用空格代替分隔符
s=strall
end
for k, v in string.gmatch(s, "%S*") do
if 0~=string.len(k) then --获取长度非0的字符串
t[#t+1]=k
end
end
end
return t
end
--功能:解析非字段名
--输入: 字段名table,读取的一行字符串
--输出: 解析后的字符串
function parseline(tfieldname, rline)
local t={} --存储每一行的分割后的数据
local strinfo="" --存放解析后的字符串
local num=0 --默认的每一行字段个数
t=trimstr(rline, " ") --以空格为分隔符获取
num=#(tfieldname)>#(t) and #(t) or #(tfieldname)--取字段名和数据名较少的
for i=1, num do
local strinfotmp=string.format("%s=\"%s\",", tfieldname[i], t[i])
strinfo=string.format("%s%s", strinfo, strinfotmp)
end
return strinfo
end
-----------------------------------------------------------
function txttolua(txtname, luaname)
local name=luaname and luaname or txtname --第二个参数若为空则和第一个一样
local readfile = io.open(txtname..".txt","r") --读取文件
assert(readfile)
local writefile = io.open(name..".lua","w") --写入文件以.lua结尾(w覆盖)
assert(writefile)
local tfieldname={} --文件中字段名的集合
for strfield in readfile:lines() do --一行一行读取字段名
local tmp=string.gsub(strfield, "^%s*(.-)%s*$", "%1") --去除首尾空格
if 0~=string.len(tmp) then --不是空行
if 1~=select(1, string.find(tmp, "#")) then --以#号开头的为注释
tfieldname=trimstr(tmp, " ") --以空格为分隔符获取
break
end
end
end
local i=1
writefile:write("tb={\n") --写入内容
for rowline in readfile:lines() do --一行一行读取非字段名
loc