how to find a string within a filename?

77 views (last 30 days)
andrew on 15 Apr 2014
Answered: Jos (10584) on 25 Apr 2014
I have a list of filenames and want to search for specific strings within the filenames and have them printed horizontally separated by a ';'. for example I have the following filenames:
  • apple.doc
  • apple2.csv
  • apple3.xls
  • banana.doc
  • banana2.csv
  • banana3.xls
I only want the "apple" files and the final output should be: apple.doc; apple2.csv; apple3.doc
How do I do this?

Answers (3)

Sara on 15 Apr 2014
Try looking up the strfind command.

Star Strider
Star Strider on 15 Apr 2014
Edited: Star Strider on 15 Apr 2014
Try this:
FileNames = {'apple.doc', 'apple2.csv', 'apple3.xls', 'banana.doc', 'banana2.csv', 'banana3.xls'}
NewFiles = {};
for k1 = 1:size(FileNames,2)
A = strfind(FileNames{k1}, 'apple');
if ~isempty(A)
NewFiles = [NewFiles; FileNames{k1}];
  1 Comment
andrew on 25 Apr 2014
I used this but it returns a double '18' how do I get the string of the doubles

Sign in to comment.

Jos (10584)
Jos (10584) on 25 Apr 2014
NAMES = {'apple.doc', 'apple2.csv', 'TESTappleTEST.xls', 'banana.doc', 'banana2.csv', 'banana3.xls','APPL_almost.txt'}
C = regexp(NAMES, '.*apple.*', 'match') % find all names with the word apple in it.
outputstr = sprintf('%s;',C{:}) ; % concatenate them in a single row
outputstr = outputstr(1:end-1) ; remove last semi-colon
disp(outputstr) % show


Community Treasure Hunt

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

Start Hunting!