我想在matlab单元格中搜索特定的字符串。例如,我的单元格包含一串像这样的字符串
variable(:,5) = {'10';'10;20';'20';'10;20';'10';'10';'20'};
我想搜索只有'10'
的所有单元格并删除它们。
我尝试使用此语句进行搜索
is10 = ~cellfun(@ isempty , strfind (variable(:,5) , '10'));
但是这会返回'10'
的所有单元格(包括带有'10;20'
的单元格)。
我想只拥有纯'10'
值的单元格
这样做的最佳方式是什么?
答案 0 :(得分:7)
它无法正常工作,因为strfind
允许部分字符串匹配。你想要的是一个完全匹配。您可以使用strcmp
执行此操作。此外,strcmp
的输入实际上可以是字符串的单元格数组,因此您可以通过以下方式使用它。
A = {'10';'10;20';'20';'10;20';'10';'10';'20'};
is10 = strcmp(A, '10');
%// 1 0 0 0 1 1 0
你也可以使用ismember
做同样的事情。
is10 = ismember(A, '10');
%// 1 0 0 0 1 1 0
作为旁注,大多数字符串函数(包括strfind
)实际上可以接受字符串的单元格数组作为输入。因此,在您的初始帖子中,strfind
内部cellfun
的包装是不必要的。