如何在单元格数组中搜索特定字符串

时间:2016-05-10 09:10:26

标签: string matlab cell

我想在matlab单元格中搜索特定的字符串。例如,我的单元格包含一串像这样的字符串

variable(:,5) = {'10';'10;20';'20';'10;20';'10';'10';'20'};

我想搜索只有'10'的所有单元格并删除它们。

我尝试使用此语句进行搜索

is10 = ~cellfun(@ isempty , strfind (variable(:,5) , '10'));

但是这会返回'10'的所有单元格(包括带有'10;20'的单元格)。

我想只拥有纯'10'值的单元格

这样做的最佳方式是什么?

1 个答案:

答案 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的包装是不必要的。