Lua string.gsub替换模式

Lua string.gsub replace pattern

我正在研究图形计算器程序。我有一个显示'y ='函数的图形。

如果找到诸如'x * 5'之类的模式(x与某物相乘,但x先给出),我想用5x代替它。这是我目前拥有的。

1
2
3
4
5
6
7
8
9
local func ="x * 5"
print(func:gsub("%*",""):gsub("",""):gsub("x%d+","%d+x"))

--[[
    get rid of the '*' symbol, get rid of spaces, then
    replace x(digit) with (digit)x

    EXPECTED OUTPUT: 5x, OUTPUT: d+x
]]

我当时想我可能可以使用string.reverse函数,但是我不知道该如何处理。谁能帮忙吗?

更新:这就是我现在所拥有的。它输出'2x.5'

1
2
local func ="x * 5"
print(func:gsub("%*",""):gsub("",""):gsub("x%d+", function(match) return match:sub(2) .. match:sub(1, 1))


我实际上想出了一种简单的方法。我决定解析功能以显示它(基本上从5 * x到5x)以显示它,而不是解析它。我这样做了,因此您可以在函数中输入3x,脚本会将其转换为3 * x,然后使用loadstring执行它。感谢您的帮助。