我试图编写一个删除单元格数组索引的程序,如果它包含一个特定的字符串。
例如,如果函数的输入值为({'Hello how are you?', 'I'm fine thank you', 'Have a nice day!'}, 'you')
,则只返回字符串'Have a nice day!'
。
这是我到目前为止(它不会删除索引,只是它发生的实例):
function d = take_out(v, s)
d = regexprep(v(:), s, '');
end
答案 0 :(得分:3)
试试这个:
function d = take_out(v, s)
d = v(cellfun('isempty', regexp(v(:), s)));
end
regexp(v(:), s)
为v
的每个单元格返回一个(可能为空)向量,其中每次出现s
的整数索引。 cellfun('isempty', ...)
检查这些向量是否为空,并返回一个逻辑索引,用于选择v
的相应单元格。
答案 1 :(得分:1)
这似乎是cellfun
的情况,这将函数应用于单元格的每个元素。应用的函数是查看是否在单元格中找到子串'you'
。如果不是,则将其转移到d
。
function d = take_out(v, s)
d = v(cellfun(@(x) isempty(strfind(x, s)), v));
end