Lua: string.gsub模式(s)允许多个模式替换。

这个主题之前已经被另一个用户在以下线程中部分处理过: Lua string.gsub with Multiple Patterns

我遇到问题,我认为问题出在我的模式(第二个)参数上。这是我正在尝试使用的 gsub 代码的示例:

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

--dateCode = dateCode:gsub(".*", {["%/"] = "s", ["%-"] = "n", ["%:"] = "c"}) --原始代码,但在 @Etan's 评论后被删除。
dateCode = dateCode:gsub(".*", {["/"] = "s", ["-"] = "n", [":"] = "c"})

print(dateCode)

MMM/dd-YYYY:ss  --打印出

MMMsddnYYYYcss  --期望的

我认为我不应该像现在这样查看所有字符,但我不确定我应该为 dateCode 变量使用什么模式。 想法是用它开始的第一个字母字符替换键。

点赞
用户1190388
用户1190388

由于您想要替换一组特定的字符,因此将它们放在字符集中作为模式:

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

当前的情况是,模式.*匹配整个字符串。由于字符串“MMM / dd-YYYY:ss”在哈希表(第二个参数)中没有索引值,因此实际上没有进行替换。

2015-11-13 20:19:32