lua文件操作(3)----txt文件转换成lua文件的table格式

最近有空空闲  整理点东西吧

 

相信这个在游戏脚本里有那么一点点用处

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
  • 1
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值