Почему бы вам не попробовать вместо этого использовать datevec
? datevec
предназначен для использования в различных строках времени и даты, и он анализирует строку и выдает полезную информацию для вас. Нет необходимости использовать regexp
или разделите свою строку любым способом. Вот простой пример:
[~,~,~,hours,minutes,seconds] = datevec('00:26:16:926', 'HH:MM:SS:FFF');
out = 1000*(3600*hours + 60*minutes + seconds);
out =
1576926
В этом формате, выход datevec
будет 6 элемент вектора, который выводит год, месяц, день, часы, минуты и секунды соответственно. Разрешение миллисекунды будет добавлено к шестому элементу вывода datevec
, поэтому все, что вам нужно сделать, это преобразовать четвертый-шестой элемент в миллисекунды и добавить их все, что и было сделано выше. Если вы не укажете фактический день, он по умолчанию будет установлен до 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
Это менее гибко, чем строки, такие как '0:26: 19: 926' не принимаются. И это не проще :) Однако +1 для 'datevec' - приятная функция! – matheburg
@matheburg - я полагаю, нет, но если каждая строка следует за одним и тем же форматом, то я не понимаю, почему мы не можем ее использовать :) Спасибо за поддержку BTW! – rayryeng
Наши ответы все очень похожи, поэтому я отчаянно ищу преимущества в моем; P – matheburg