我发现很多方法可以在Lua的逗号中分割字符串,但这并不是我想要的。我需要能够执行以下操作:我将参数ABC
作为字符串,我需要能够仅提取A
,B
和{ {1}}。我该怎么做呢?我一直希望这样的东西能起作用:
C
答案 0 :(得分:1)
您还可以为字符串设置调用元方法:
getmetatable("").__ call = string.sub
然后这个有效:
for i=1,4 do
print(i,x(i),x(i,i))
end
答案 1 :(得分:0)
这很容易。只需 迭代 。
(假设您使用的是Lua版本5.1)
代码:
str = "xyz"
for i = 1, #str do
local c = str:sub(i,i)
print(c)
end
输出:
$lua main.lua
x
y
z
或者,正如@tonypdmtr在评论中所说:
for s in s:gmatch '.' do print(s) end
答案 2 :(得分:0)
如果您只想获取索引的子字符串,这应该适用于大多数版本的Lua:
x = 'ABC'
print (string.sub(x, 1, 1)) -- 'A'
print (string.sub(x, 2, 2)) -- 'B'
print (string.sub(x, 3, 3)) -- 'C'
在Lua 5.1之后,根据此doc,您可以执行以下操作:
getmetatable('').__index = function(str,i) return string.sub(str,i,i) end
x = 'ABC'
print (x[1]) -- 'A'
print (x[2]) -- 'B'
print (x[3]) -- 'C'
答案 3 :(得分:0)
没有混淆metatables:
function getCharacters(str)
local x = {}
for i=1, str:len(), 1 do
table.insert(x, str:sub(i, i))
end
return x
end
使用此功能,无论你的字符串有多长,你都会在其中填充一个表格中的字符:)