我最近一直在使用Youtube API v3(是的,我知道,它不适用于Lua),但是当我需要将ISO 8601持续时间转换为格式化字符串时,网络上的任何内容都无济于事。我一直在谷歌搜索,寻找一个可以帮助这种事情的特定图书馆,但不幸的是,Lua没有。除了Lua之外,还有成千上万的图书馆用于其他语言。
现在,我似乎陷入了我甚至不知道如何使用的字符串模式。那么我还能怎么做呢?
ISO 8601持续时间的示例:
PT3M33S
我想把它转换成这样的东西:
3:33
答案 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)