查找字符数组中存在特定单词的行号

Find row number where specific words exist in char array

我知道这很简单,我已经尝试了 strmatch、ismember、cellfun 变体,但没有找到我想要的答案。 我有这样的数据,它们是变量 "x" 中的日期 2014 年 12 月 28 日 2014 年 12 月 29 日 2014 年 12 月 30 日 2014 年 12 月 31 日 2015 年 1 月 1 日 2015 年 1 月 2 日 2015 年 1 月 3 日 2015 年 1 月 4 日 2015 年 1 月 5 日 我只需要知道哪些行号 == 'Jan'?因此,分析 "x" 行的结果应该是 结果 = 5个 6个 7 8个 9

这可能是一种方法 -

%// Convert to cell array
x_cell = cellstr(x_cell)

%// Split each cell into cells based on the delimiter "-"
X_split  = cellfun(@(v) strsplit(v,'-'),x_cell,'Uni',0)

%// Look for "Jan" in the second cell of each cell at the "first level"
idx = find(cellfun(@(v) strcmp(v{2},'Jan'),X_split))

使用正则表达式的替代方法:

clear
clc

X = {'28-Dec-2014' ,'29-Dec-2014', '30-Dec-2014', '31-Dec-2014' ,...
    '01-Jan-2015', '02-Jan-2015' ,'03-Jan-2015', '04-Jan-2015', '05-Jan-2015'}

%// Look for any element in X containing Jan
CheckCells = regexp(X,'Jan')

%// Find non-empty cells, resulting from the call to regexp.
Indices = find(~cellfun('isempty',CheckCells))

输出:

Indices =

     5     6     7     8     9