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

Lua: string.gsub pattern(s) to permit multiple pattern replacement

此主题之前已由另一个用户在线程中部分处理过: 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 变量使用什么模式。 这个想法是用它开头的第一个字母字符替换键。

由于您想要替换 select 组字符,请将它们放入字符集中作为模式:

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

当前发生的情况是,使用 .* 模式,它匹配整个字符串。由于字符串 "MMM/dd-YYYY:ss" 在散列 table(第二个参数)中没有索引值,因此实际上没有发生替换。