一种解决方案可能是:
timeString = '00:26:16:926';
cellfun(@(x)str2num(x),regexp(timeString,':','split'))*[3600000;60000;1000;1]
Run Code Online (Sandbox Code Playgroud)
结果:
1576926
Run Code Online (Sandbox Code Playgroud)
为什么不尝试使用datevec? datevec旨在接收各种时间和日期字符串,它会解析字符串并为您提供有用的信息.没有必要以regexp任何方式使用或拆分你的字符串.这是一个简单的例子:
[~,~,~,hours,minutes,seconds] = datevec('00:26:16:926', 'HH:MM:SS:FFF');
out = 1000*(3600*hours + 60*minutes + seconds);
out =
1576926
Run Code Online (Sandbox Code Playgroud)
在这种格式中,输出datevec将是一个6元素向量,分别输出年,月,日,小时,分钟和秒.毫秒分辨率将被添加到datevec输出的第六个元素,因此您所要做的就是将第四个元素转换为第六个元素到毫秒并将它们全部添加,这就是上面所做的.如果你没有指定实际的日期,它只是默认为当年的1月1日...但是我们还没有使用日期...我们只是想要时间!
它的美妙之datevec处在于它可以接受多个字符串,因此您不仅限于单个输入.只需将所有字符串放入单个单元格数组中,然后datevec按以下方式使用:
times = {'00:26:16:926','00:27:16:926', '00:28:16:926'};
[~,~,~,hours,minutes,seconds] = datevec(times, 'HH:MM:SS:FFF');
out = 1000*(3600*hours + 60*minutes + seconds);
out =
1576926
1636926
1696926
Run Code Online (Sandbox Code Playgroud)