在 lua 中拆分算术运算字符串



以下是lua中的算术运算字符串。

local str ='x+abc*def+y^z+10'

是否可以拆分此字符串以显示单个变量或数字?例如,假设字符串str被拆分为表s。然后输出将是

s[1] = x
s[2] = abc
s[3] = def
s[4] = y
s[5] = z
s[6] = 10

拆分将由操作员完成+,-,*,,^,%

也试试这个更简单的模式:

local str ='x+(abc*def)+y^z+10'
for w in str:gmatch("%w+") do
print(w)
end

您可以使用 string.gmatch 来迭代字符串。 随意向模式添加其他运算符。

请参阅 https://www.lua.org/manual/5.3/manual.html#6.4.1

local str ='x+abc*def+y^z+10'
local s = {}
for operand in str:gmatch('[^%+%*%^]+') do
table.insert(s, operand)
end

您可以使用string.gmatch来执行所需的操作。 您将使用模式%+%-%*%^/

local str ='x+abc*def+y^z+10'
local s = {}
for value in str:gmatch("[%+%-%*%^/]*(%w*)[%+%-%*%^/]*") do
s[#s + 1] = value
end
print(unpack(s))

也不是说如果您需要作为您的问题中显示的运算符,则需要使用额外的进行转义。

Resuree for leaning more about lua patterns: understanding_lua_patterns

最新更新