如何将 ISO 8601 持续时间转换为 Lua 中的格式化字符串?

How would I convert ISO 8601 durations into a formatted string in Lua?

我最近一直在使用 Youtube API v3(是的,我知道,它不适合 Lua),但是当我需要将 ISO 8601 持续时间转换为格式化时字符串,网络上没有任何帮助。我一直在到处搜索,以搜索可以帮助解决此类问题的特定库,但不幸的是, NONE 对应 Lua。除了 Lua.

之外,还有数以千计的其他语言的库

现在,我似乎受困于我什至不知道如何使用的字符串模式。那么我还能如何完成这项任务呢?

ISO 8601 持续时间示例: PT3M33S

我想把它转换成这样: 3:33

如果您不想解析整个 ISO 8601 规范,请尝试以下代码:

s="PT3M33S"
t=s:gsub("^.-(%d+)M(%d+)S","%1:%2")
print(t)

它使用Lua 模式匹配。模式如下:跳过所有内容,直到 运行 数字后跟 M,然后找到 运行 数字后跟 S。捕获两个 运行 的数字并在替换模式中使用它们。

如果你想提取这两个数字,使用这个:

s="PT3M33S"
M,S=s:match("^.-(%d+)M(%d+)S")
print(M,S)