以下是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