查找字符数组中存在特定单词的行号
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
我知道这很简单,我已经尝试了 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