editing a cell in a loop

3 ビュー (過去 30 日間)
Max
Max 2015 年 11 月 8 日
編集済み: Geoff Hayes 2015 年 11 月 8 日
If I have a 1 column cell
x=
'dog'
'at'
'cat'
'four'
'creative'
How do I write code that removes the words based on their length of letters. Like say I input n=1 it removes all words with letter 1 then n=2 it would remove all words with letter 2 so it would remove 'at' then n=3 removes all words with letter 3 so removes 'cat' and 'dog' leaving
x=
'four'
'creative'
Thanks

採用された回答

Geoff Hayes
Geoff Hayes 2015 年 11 月 8 日
Max - use cellfun to apply a function to each element in your array. In your case, you could use the length function to determine the lengths of each string or to determine which strings are a certain number of characters long. For example, using your x from above
n = 2;
idcs = cellfun(@length(str)==2,x);
will return
idcs =
0
1
0
0
0
which tells us that the second string in x is of length two. We can then remove that string easily enough by doing
x(idcs) = [];
The above call to cellfun takes an anonymous function as its first input parameter
@(str)length(str)==2
where str is a string element from our cell array x. We calculate the length of str and compare it to two, so that the output from this call is logical (true or false).

その他の回答 (0 件)

カテゴリ

Help Center および File ExchangeCharacters and Strings についてさらに検索

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by