删除子字符串

时间:2015-05-25 22:16:16

标签: matlab function loops for-loop

我试图编写一个删除单元格数组索引的程序,如果它包含一个特定的字符串。

例如,如果函数的输入值为({'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

2 个答案:

答案 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