How to change a certain array cell depending on its length
2 次查看(过去 30 天)
显示 更早的评论
Hello,
I currently have this very simple code:
if strlength(A) >= 250
A = [];
end
My objective is for every cell that A has which is larger than 250 characters, make that specific array row 0.
e.g. ( The 12th row of array A has more than 250 characters in it, thus it should become 0 after the code runs)
However, my problem is that the program just skips over the if statement as if it's false when in reality I have characters which go beyond 250.
I tried implementing the cellfun into this as well just in case every row of the array isn't being checked.
if cellfun(@strlength, A)>=250
A = [];
end
but still the same problem.
I know the if statement isn't false because upon running just
strlength(A) >= 250
I have a whole list of 0's (which corespond to characters under 250) and some 1's (which are those above 250)
0 个评论
采纳的回答
Adam Danz
2019-9-19
编辑:Adam Danz
2019-9-19
If 'A' is a cell array of character vectors and you'd like to replace cells that have a length greater than 250 with an empty char array,
A(strlength(A)>250) = {''};
For string arrays (ie, ["abc", "def", "ghi" ...],
A(strlength(A)>250) = "";
8 个评论
Adam Danz
2019-9-19
If A is a cell array of paths and you're trying to eliminate the paths and keep the filenames, this would be a better approach:
[~,filenames] = cellfun(@fileparts,A,'UniformOutput',false)
更多回答(1 个)
Fabio Freschi
2019-9-19
编辑:Fabio Freschi
2019-9-19
mask = strlength(A) > 250;
A(mask) = cellfun(@(i) '', A(mask), 'uniform', 0);
using a strategy similar to the solution used here https://www.mathworks.com/matlabcentral/answers/366514-using-conditional-statements-inside-cellfun
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 Characters and Strings 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!