如何在MATLAB中解析具有不规则长度的日期字符串的单元格数组?

时间:2017-11-07 16:14:39

标签: arrays regex string matlab string-length

我有一个日期的单元格数组作为字符串(格式:'mm / dd / yyyy'),其中字符串长度因单元格条目从8到10而不同,具体取决于日期(例如,对于'1,n = 8) / 1/2015'和'10 / 10/2015'的n = 10)。我想将每个单元格数组条目转换为其对应的double作为datenum数量。我试过了:

id = find(~cellfun( @isempty, regexp( dateList, '/', 'tokenExtents' ) ) );

id = find(~cellfun( @isempty, strfind( dateList, '/' ) ) );

但这不对。提供了一个单元格数组的片段:

dateList = {'9/9/2016';
            '9/10/2016';
            '10/10/2016';
            '10/11/2016'};

2 个答案:

答案 0 :(得分:3)

您必须使用datenum,因为它将接受字符串的单元格数组:

dateList = {'9/9/2016'; '9/10/2016'; '10/10/2016'; '10/11/2016'};
id = datenum(dateList);

并确认它有效:

>> datestr(id)

ans =

09-Sep-2016
10-Sep-2016
10-Oct-2016
11-Oct-2016

答案 1 :(得分:0)

1)用strsplit:日,月和年

将每个细胞提取到3个不同的区块

2)使用pad使每个区块长度相同(白天和月份为2,年份为4)

3)将字符串与[D,' /',M,' /',Y]一起加入,您就可以毫无问题地运行datenum。

编辑1:我认为另一个答案要容易得多,我不知道datenum可以采用稍微不同的字符串。