从连接表中获取特定值。

尝试允许将连接表作为这样的引用:

local group = table.concat(arguments, ",", 1)

其中 arguments = {"1,1,1"}

当前,执行 group[2] 会给出逗号。如何避免这一点,同时仍允许使用两位数字?

(我尝试使用它的片段)

for i = 1, #group do target:SetGroup(i, tonumber(group[i])) end

点赞
用户33252
用户33252

也许你想要这样的代码块:

local i = 1
for v in string.gmatch(s, "(%w+),*") do
   group[i] = v
   i = i + 1
end

根据评论修改后的版本,避免直接使用 table 的方式:

local i = 1
for v in string.gmatch(s, "(%w+),*") do
   target:SetGroup(i, tonumber(v))
   i = i + 1
end
2014-11-25 21:29:06
用户2491556
用户2491556
split 函数(需将其添加到代码中)

split = function(str, delim) if not delim then delim = " " end -- 消除错误情况... if string.find(str, delim) == nil then return { str } end local result = {} local pat = "(.-)" .. delim .. "()" local nb = 0 local lastPos for part, pos in string.gfind(str, pat) do nb = nb + 1 result[nb] = part lastPos = pos end -- 处理最后一个字段 result[nb + 1] = string.sub(str, lastPos) return result end


那么

local arguments = {"1,1,1"}; local group = split(arguments[1], ",");

for i = 1, #group do target:SetGroup(i, tonumber(group[i])) end


还要注意

local arguments = {"1,1,1"}; local group = split(arguments[1], ","); local group_count = #group;

for i = 1, group_count do target:SetGroup(i, tonumber(group[i])) end

```

是更快的代码 ;)

2014-11-29 17:39:03