Lua时间格式字符串拆分求助:HH:MM:SS.FRAME格式处理
解决时间码拆分问题:捕获
.分隔符拆分HH:MM:SS.FRAME格式 Hey there! Totally get the frustration—timecode parsing can feel way trickier than it should be, especially when that final frame segment is being stubborn. Let’s break this down with simple, actionable solutions.
核心思路
你的需求是把HH:MM:SS.FRAME拆成小时、分钟、秒、帧四个独立部分,关键就是先拆分冒号,再对最后一部分拆分小数点,或者直接用正则一次性匹配所有分段。
方法1:分步拆分(直观易理解)
先按冒号:拆分出前三个部分,再对包含秒和帧的字符串按小数点.拆分,这样就能精准拿到每一段:
Python 示例
timecode = "00:00:00.00" # 按冒号拆分,得到小时、分钟、"秒.帧"字符串 hh, mm, ss_frame = timecode.split(':') # 按小数点拆分秒和帧,用split('.', 2)确保只拆一次(避免异常) ss, frame = ss_frame.split('.', 2) # 现在可以把这四个值存入表中 print(f"小时: {hh}, 分钟: {mm}, 秒: {ss}, 帧: {frame}")
JavaScript 示例
const timecode = "00:00:00.00"; // 解构赋值拆分冒号部分 const [hh, mm, ssFrame] = timecode.split(':'); // 拆分秒和帧 const [ss, frame] = ssFrame.split('.', 2); console.log(`小时: ${hh}, 分钟: ${mm}, 秒: ${ss}, 帧: ${frame}`);
方法2:正则表达式(简洁高效)
用正则表达式直接匹配所有分段,一步到位,适合需要批量处理时间码的场景:
Python 示例
import re timecode = "00:00:00.00" # 正则匹配两位数字的小时、分钟、秒,以及两位数字的帧 pattern = re.compile(r'(\d{2}):(\d{2}):(\d{2})\.(\d{2})') match_result = pattern.match(timecode) if match_result: hh, mm, ss, frame = match_result.groups() print(f"小时: {hh}, 分钟: {mm}, 秒: {ss}, 帧: {frame}")
JavaScript 示例
const timecode = "00:00:00.00"; const pattern = /(\d{2}):(\d{2}):(\d{2})\.(\d{2})/; const matchResult = timecode.match(pattern); if (matchResult) { // 第一个元素是完整匹配项,所以从索引1开始取分组 const [_, hh, mm, ss, frame] = matchResult; console.log(`小时: ${hh}, 分钟: ${mm}, 秒: ${ss}, 帧: ${frame}`); }
小提示
如果遇到格式不规范的时间码(比如帧位数不是两位),可以调整正则里的\d{2}为\d+来匹配任意位数的数字,或者根据你的业务需求做针对性校验。
内容的提问来源于stack exchange,提问作者LumiJay
相关产品推荐
相关产品推荐

