如何在Lua及其他编程语言中将字符串时间戳转为指定结构数组
实现思路
核心逻辑是通过正则捕获时间戳各分段的数值,转换为整数后赋值给对应字段即可,适配示例中HH:MM:S.sss这类补零不统一的格式。
正则匹配规则
使用分组捕获的正则表达式:^(%d+):(%d+):(%d+)%.(%d+)$
四个捕获组按顺序对应:小时、分钟、秒、毫秒
Lua 实现代码
local t = "00:00:0.031" -- 正则匹配捕获四个分段 local h, m, s, ms = string.match(t, "^(%d+):(%d+):(%d+)%.(%d+)$") -- 转整数后构造目标表 local ft = { hours = tonumber(h), minutes = tonumber(m), seconds = tonumber(s), milliseconds = tonumber(ms) }
Python 实现示例(供参考)
import re time_str = "00:00:0.031" match_obj = re.match(r"^(\d+):(\d+):(\d+)\.(\d+)$", time_str) if match_obj: h, m, s, ms = map(int, match_obj.groups()) ft = { "hours": h, "minutes": m, "seconds": s, "milliseconds": ms }
边界情况说明
- 如果毫秒段不足3位(比如
00:00:0.3),捕获到的数值是3而非300,符合原字符串的字面含义,需要补位的话可以自行对毫秒段做左补零到3位的处理后再转整数 - 如果存在小时/分钟/秒大于等于60的非法输入,可自行在捕获后加数值校验逻辑
内容的提问来源于stack exchange,提问作者Cyprien
相关产品推荐
相关产品推荐

