2011-01-18 42 views
0

我全新到Lua从单纯的VB.Net背景。我有一个需要迭代的maplines大文件。的数据是在以下形式:你如何解析字符串在Lua“1 2 3 4”?

; XX.XXX YY.YYY名称 ; [航空公司] 58.50 -12.44 58.21 -13.73

58.21 -13.73 57.89 -15.02

57.89 -15.02 57.54 -16.30

57.54 -16.30 57.17 -17.58

57.17 -17.58 56.76 - 18.84

56.76 -18.84 56.33 -20.10

56.33 -20.10 55.87 -21.35

54.33 -25.02 53.77 -26.22

我试过这个,但不断收到错误。

local mapLines = {} 

local filePath = system.pathForFile("data.ini", system.DocumentsDirectory) 

local file = io.open(filePath, "r") 

if file then 
local contents = file:read("*a") 

--print("Contents of " .. filePath) 
--print(contents) 

io.close(file) 

local t = display.newText("Contents of ", 5, 80, nil, 16); 
t:setTextColor(255, 255, 136, 255); 
local t = display.newText(filePath, 5, 100, nil, 10); 
t:setTextColor(255, 255, 136, 255); 

local ylast = 130 
for line in io.lines(filePath) do 
    local t = display.newText(line, 15, ylast, nil, 14); 
    t:setTextColor(255, 255, 255);  
    ylast = ylast + 20 

    n = tonumber(line); 
    if n == nil then 

     local f = {} 
     s = "1 2 3 4" 
     for k, v in string.gmatch(s, "(%w+) (%w+)") do 
     f[k] = v 
      end 



local myLine = newLine(tonumber(f[1]), tonumber(f[2]), tonumber(f[3]), tonumber(f[4])) 
     table.insert(mapLines, myLine) 
    end 
    end 
end 


-- Example of shape drawing func 


local function newLine(x,y,x1,y1) 

-- need initial segment to start 
local Line = display.newLine(x, y, x1, y1) 

Line:setColor(30, 155, 30, 100) 
Line.width = 3 

return Line 
end 

Runtime:addEventListener("enterFrame", mapLines) 

任何帮助将不胜感激!

戴夫

+1

请修正格式

local string_to_parse = '1 2 3 4' for s in string_to_parse:gmatch('%d+') do print(s) end 

示例代码。请说明您获得的错误的详细信息,或者生成一个在Lua控制台中工作的最小示例。你的代码显然是一些Lua脚本框架。 – 2011-01-19 06:01:32

+0

我已经大幅重新格式化了代码。我做的一个关键是用空格替换所有标签,因为标签字符被降价引擎误解。我也压缩了大部分空白行。如果我太过于苛刻,请随时放回一些。 – RBerteig 2011-01-19 10:21:59

回答

4

回答这个问题的主题:在codepad