Я довольно близка к этой проблеме. Мне нужно отфильтровать массив ячеек. Массив ячеек может содержать в себе множество элементов, но то, что я хочу сделать, это вытащить строки, используя рекурсию. Я довольно близко отношусь к этому. У меня просто проблема, когда в ячейках есть пробелы. Это то, что я должен получить:Фильтрация массива ячеек с рекурсией
Test Cases:
cA1 = {'This' {{{[1:5] true} {' '}} {'is '} false true} 'an example.'};
[filtered1] = stringFilter(cA1)
filtered1 => 'This is an example.'
cA2 = {{{{'I told '} 5:25 'her she'} {} [] [] ' knows'} '/take aim and reload'};
[filtered2] = stringFilter(cA2)
filtered2 => 'I told her she knows/take aim and reload'
Вот что у меня есть:
%find the strings in the cArr and then concatenate them.
function [Str] = stringFilter(in)
Str = [];
for i = 1:length(in)
%The base case is a single cell
if length(in) == 1
Str = ischar(in{:,:});
%if the length>1 than go through each cell and find the strings.
else
str = stringFilter(in(1:end-1));
if ischar(in{i})
Str = [Str in{i}];
elseif iscell(in{i})
str1 = stringFilter(in{i}(1:end-1));
Str = [Str str1];
end
end
end
end
Я пытался использовать «IsMember», но это не сработало. Какие-либо предложения? Мой код выводит следующее:
filtered1 => 'This an example.'
filtered2 => '/take aim and reload'
Хорошая работа на этом! – Divakar
ОК, это на самом деле имеет смысл :) Спасибо! –