Deleting strings in a list

27 views (last 30 days)
Niels Gustav Nortvig Willesen
Commented: Stephen23 on 26 Feb 2018
So I have a list containing strings like this
test = {'3.jpg', '4.jpg', '5.jpg', '6.jpg'};
I want to delete the specific entry with the name '4.jpg' completely, not just be left with ' ' - which is what the function erase does erase(test{2}, '4.jpg'). And in my project I do not know where this specific element is located.
for i = 1:length(test)
if strcmp(test{i}, '4.jpg') == 1
""Do something that deletes element i""
end
end
Thanks in advance
  1 Comment
Stephen23
Stephen23 on 26 Feb 2018
A simple alternative to using indexing:
setdiff(test,'4.jpg')

Sign in to comment.

Accepted Answer

Jan
Jan on 26 Feb 2018
test = {'3.jpg', '4.jpg', '5.jpg', '6.jpg'};
test(strcmp(test, '4.jpg')) = []

More Answers (1)

Geoff Hayes
Geoff Hayes on 26 Feb 2018
Niels - you could try
test(strcmp(test,'4.jpg')) = []
We use strcmpi(test,'4.jpg') to determine which elements of test string match to 4.jpg. The result is a logical array of zeros and ones (where a one indicates a match). We then set all those matches to be empty which "removes" the element from the list. And so test is now
test =
'3.jpg' '5.jpg' '6.jpg'

Community Treasure Hunt

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

Start Hunting!