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

时间:2017-02-03 19:31:31

标签: lua duration iso8601 youtube-data-api

我最近一直在使用Youtube API v3(是的,我知道,它不适用于Lua),但是当我需要将ISO 8601持续时间转换为格式化字符串时,网络上的任何内容都无济于事。我一直在谷歌搜索,寻找一个可以帮助这种事情的特定图书馆,但不幸的是,Lua没有。除了Lua之外,还有成千上万的图书馆用于其他语言。

现在,我似乎陷入了我甚至不知道如何使用的字符串模式。那么我还能怎么做呢?

ISO 8601持续时间的示例: PT3M33S

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

1 个答案:

答案 0 :(得分:3)

如果您不想解析整个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)