字符串模式匹配/查找/计数/替换

所以这是一个强大的问题。我有一个接受两个参数(string_name,macros)的函数。以下是函数,以便我可以进一步解释。

`` ` function ParseStrings(string_name,macros) return my_table [string_name] - 它所做的就是返回string_name的值 end

`` `

问题是第二个参数是一个表,如果它是一个表,那么字符串中将会有各种部分,其格式为“String stuff $MACRO_KEY; more string text”,并且$和;之间的内容是要查找的键在其中发送的宏表格中。现在,每当出现这样的值时,字符串中总会有第二个是表,因此没有任何问题。我需要能够计算字符串中宏的实例数,然后用其各自的宏表值替换每个宏组件。所以这是如何在这种情况下调用func的方式...

`` ` local my_table = { my_string =“我的字符串内容$MACRO_COMPONENT;更多字符串东西$MACRO_COMPONENT_SUB;$MACRO_COMPONENT_ALT;” } local macro = { MACRO_COMPONENT =“F”, MACRO_COMPONENT_SUB =“随机文本”, MACRO_COMPONENT_ALT =“14598” }

function ParseStrings(string_name,macros) return my_table [string_name] - 它所做的就是返回string_name的值 end

ParseStrings(“my_string”,宏)

`` `

所以我认为:

` string.gsub(my_table [my_string]:match(“%b $;”):sub(2,my_table [my_string]:match(“%b $;”):len() - 1) `

但是这是一个长而过于复杂的答案(AFAIK),而且从我的测试中发现它只进行1次替换(因为找到模式只发生一次),如果字符串中有多个实例,那么这不起作用。所以有什么好的想法吗?

点赞