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

时间:2015-02-20 19:28:33

标签: arrays matlab char

我知道这很简单,我已经尝试过strmatch,ismember,cellfun变种,没有我想要的答案。 我有这样的数据,它们是变量中的日期" x" 28日 - 12月2014 29日 - 12月2014 30日 - 12月2014 31日 - 12月2014 01-JAN-2015 02-JAN-2015 03-JAN-2015 04-JAN-2015 05-JAN-2015 我需要知道的是哪些行号==' Jan&#39 ;?因此,分析" x"中的行的结果应该 结果= 五 6 7 8 9

2 个答案:

答案 0 :(得分:1)

这可能是一种方法 -

%// 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))

答案 1 :(得分:1)

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

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