Borrar filtros
Borrar filtros

how to find a string within a filename?

18 visualizaciones (últimos 30 días)
andrew
andrew el 15 de Abr. de 2014
Respondida: Jos (10584) el 25 de Abr. de 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?

Respuestas (3)

Sara
Sara el 15 de Abr. de 2014
Try looking up the strfind command.

Star Strider
Star Strider el 15 de Abr. de 2014
Editada: Star Strider el 15 de Abr. de 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}];
end
end
  1 comentario
andrew
andrew el 25 de Abr. de 2014
I used this but it returns a double '18' how do I get the string of the doubles

Iniciar sesión para comentar.


Jos (10584)
Jos (10584) el 25 de Abr. de 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

Categorías

Más información sobre Characters and Strings en Help Center y File Exchange.

Etiquetas

Community Treasure Hunt

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

Start Hunting!

Translated by