我有一个函数,它使用不同类型的灵活数量的输入。我想检查变量是否存在某个字符串/子串。
regexpi(varargin,'test');
这对
varargin
有效,但如果有其他数据类型,则会失败如何容易地(最少的代码集)得到一个逻辑矩阵来测试varargin={'a','b'}
的存在吗?我想到了一件令人烦恼的事:varargin={'a',1,'test',{2}};
logi=num2cell(zeros(size(varargin))); %logical vector 'is string present or not';
logi(cellfun(@isstr,varargin))=regexp(varargin(cellfun(@isstr,varargin)),'test');
%outputs a cell array where numbers > 0 represent 'string found'
最佳答案
我将使用这个,它与您的代码类似,但更简单:
varargin = {'abcd', 'efg', [1 2 3 4], {10; 20}};
pattern = 'bc';
result = cellfun(@(x) ischar(x) && ~isempty(regexpi(x, pattern)), varargin);
注意在匿名函数中使用
&&
如何防止将测试应用于非char参数。