你如何在Lua“1 2 3 4”中解析这个字符串?

时间:2011-01-18 21:24:55

标签: lua

从纯粹的VB.Net背景来看,我是Lua的新手。我有一个庞大的maplines文件,我需要迭代。数据采用以下形式:

; 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 个答案:

答案 0 :(得分:4)

回答主题中的问题:

local string_to_parse = '1 2 3 4'

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

codepad

上的示例代码
相关问题