在 lua 中拆分算术运算字符串
Spliting string of arithmetic operations in lua
下面是lua中的算术运算串。
local str ='x+abc*def+y^z+10'
能否拆分此字符串以显示单个变量或数字?例如,假设字符串 str
被拆分为 table s
。那么输出将是
s[1] = x
s[2] = abc
s[3] = def
s[4] = y
s[5] = z
s[6] = 10
拆分要用运算符+,-,*,\,^,%
您可以使用 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))
另外,如果您需要 \
作为您问题中所示的运算符,则需要使用额外的 \
.
进行转义
更多了解 lua 模式的资源:understanding_lua_patterns
也试试这个更简单的模式:
local str ='x+(abc*def)+y^z+10'
for w in str:gmatch("%w+") do
print(w)
end
下面是lua中的算术运算串。
local str ='x+abc*def+y^z+10'
能否拆分此字符串以显示单个变量或数字?例如,假设字符串 str
被拆分为 table s
。那么输出将是
s[1] = x
s[2] = abc
s[3] = def
s[4] = y
s[5] = z
s[6] = 10
拆分要用运算符+,-,*,\,^,%
您可以使用 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))
另外,如果您需要 \
作为您问题中所示的运算符,则需要使用额外的 \
.
更多了解 lua 模式的资源:understanding_lua_patterns
也试试这个更简单的模式:
local str ='x+(abc*def)+y^z+10'
for w in str:gmatch("%w+") do
print(w)
end