Lua:string.gsub模式允许多个模式替换

时间:2015-11-13 19:57:38

标签: lua pattern-matching gsub lua-patterns

此主题已由线程中的其他用户部分处理: Lua string.gsub with Multiple Patterns

我遇到了问题,我相信这是我的模式(第二个)论点。以下是我尝试使用的gsub代码示例:

local dateCode = "MMM/dd-YYYY:ss"

--dateCode = dateCode:gsub(".*", {["%/"] = "s", ["%-"] = "n", ["%:"] = "c"}) --original code but removed after @Etan's comments.
dateCode = dateCode:gsub(".*", {["/"] = "s", ["-"] = "n", [":"] = "c"})

print(dateCode)

MMM/dd-YYYY:ss  --printed

MMMsddnYYYYcss  --desired

我相信我不应该像我目前所拥有的那样查看所有字符,但我不确定我应该为dateCode变量使用什么模式。 我们的想法是用它开头的第一个字母字符替换键。

1 个答案:

答案 0 :(得分:3)

由于您需要替换一组精选字符,请将它们作为模式放入字符集中:

dateCode = dateCode:gsub("[/:-]", {["/"] = "s", ["-"] = "n", [":"] = "c"})

当前发生的情况是,模式.*到位后,它与整个字符串匹配。由于字符串"MMM/dd-YYYY:ss"在哈希表(第二个参数)中没有索引值,因此实际上不会发生替换。