所以这是一个很有问题的问题。我有一个接受2个args(string_name,宏)的函数。在这里,我可以进一步解释。
function ParseStrings(string_name, macros)
return my_table[string_name]
-- All it does it returns the string_name's value
end
问题是第二个arg是一个表,如果它是一个表,那么在字符串中会有各种部分的格式为“String stuff $ MACRO_KEY;更多的字符串文本”以及$之间的内容和;是查找随其发送的宏表的关键。现在,任何时候像字符串中出现的值都会出现第二个arg,这是一个表,所以没有问题。我需要能够计算字符串中宏的实例数,然后用它各自的宏'表值替换每个宏组件。所以这里是如何在这个实例中调用func ...
local my_table = {
my_string = "My string content $MACRO_COMPONENT; more string stuff $MACRO_COMPONENT_SUB;$MACRO_COMPONENT_ALT;"
}
local macro = {
MACRO_COMPONENT = "F",
MACRO_COMPONENT_SUB = "Random Text",
MACRO_COMPONENT_ALT = "14598"
}
function ParseStrings(string_name, macros)
return my_table[string_name]
-- All it does it returns the string_name's value
end
ParseStrings("my_string", macro)
所以我在想:
string.gsub(my_table[my_string]:match("%b$;"):sub(2,my_table[my_string]:match("%b$;"):len() - 1)
但这是一个冗长且过于复杂的答案(AFAIK),从我的测试中它只进行了1次替换(因为模式只发现一次),如果字符串中有多个实例,那么它就不能正常工作。那么想法?