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

时间:2014-12-22 23:56:17

标签: string replace lua matching lua-table

所以这是一个很有问题的问题。我有一个接受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次替换(因为模式只发现一次),如果字符串中有多个实例,那么它就不能正常工作。那么想法?

0 个答案:

没有答案