我分裂这个问题:
x = "-301 1021"
到这个
x = -301
y = 1021
在C ++中,这更容易,但我真的不知道如何在Lua中做到这一点。我尝试过这样做
string1 .. string[i]
@Edit 我已经这样做了,但现在它没有获得负面的值
for coordinate in ActualCoords:gmatch("%w+") do
table.insert(coordinates, coordinate)
end
x = coordinates[1];
x = tonumber(x);
z = coordinates[2];
z = tonumber(z);
答案 0 :(得分:0)
试试这个:
s = "-301 1021"
x,y = s:match("(%S+)%s+(%S+)")
x,y = tonumber(x), tonumber(y)
答案 1 :(得分:0)
您可以使用LPEG进行此类解析任务。
local lpeg = assert(require"lpeg")
local R, S = lpeg.R, lpeg.S
local integer = (S'+-'^-1 * R("09")^1) / tonumber
local space = S(" \t")^0
local x, y = lpeg.match((integer * space)^1, "-301 1021")
print(x,y)
答案 2 :(得分:0)
假设您的输入是常规的:
restults = {};
for m in str:gmatch("[^%s]+") do
results[#results+1] = m+0;
end
如果输入是不规则的,意味着你需要验证它不是由空格分隔的随机事物,你需要制作一个更复杂的模式,例如。
"[%deE.-]+"
答案 3 :(得分:0)
或试试这个
local s = "-301 1021 -300 1022 -20 -1000"
local coord = {}
for x,y in s:gmatch("(-?%d+).-(-?%d+)") do
coord[#coord+1] = { x=tonumber(x), y=tonumber(y) }
end
print( coord[1].x, coord[1].y)
print( coord[2].x, coord[2].y)
print( coord[3].x, coord[3].y)