开发者

How do you Parse this String in Lua "1 2 3 4"?

开发者 https://www.devze.com 2023-02-05 14:33 出处:网络
I am brand new to Lua from a pure VB.Net background.I have a large file of maplines that I need to iterate through.The data is in the form of:

I am brand new to Lua from a pure VB.Net background. I have a large file of maplines that I need to iterate through. The data is in the form of:

;XX.XXX YY.YYY Name ; [Airways] 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开发者_StackOverflow中文版.22

I have tried this but keep getting an error.

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 )

Any help would be greatly appreciated!

Dave


answering the question in the topic:

local string_to_parse = '1 2 3 4'

for s in string_to_parse:gmatch('%d+') do
   print(s)
end

sample code on codepad

0

精彩评论

暂无评论...
验证码 换一张
取 消