在Lua中解析字符串

时间:2018-05-30 11:05:35

标签: parsing lua

我发现很多方法可以在Lua的逗号中分割字符串,但这并不是我想要的。我需要能够执行以下操作:我将参数ABC作为字符串,我需要能够仅提取AB和{ {1}}。我该怎么做呢?我一直希望这样的东西能起作用:

C

4 个答案:

答案 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

Try it online!

或者,正如@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

使用此功能,无论你的字符串有多长,你都会在其中填充一个表格中的字符:)