How to extract only part of a file name
6 visualizaciones (últimos 30 días)
Mostrar comentarios más antiguos
Inês Mendes
el 19 de Mayo de 2015
Comentada: Inês Mendes
el 19 de Mayo de 2015
I am trying to extract a file but i don´t want to extract it´s entire name. For example:
In
inv_1000061014358_20150424_115235
I only want to extract inv_1000061014358.
Can anyone help?
Thanks!!!!
0 comentarios
Respuesta aceptada
dpb
el 19 de Mayo de 2015
Editada: dpb
el 19 de Mayo de 2015
Presuming the numeric substring isn't the same length always,
ix=strfind(s,'_'); % get the underscore locations
t=s(1:ix(2)-1); % return the substring up to 2nd underscore
One can also use find to only get the first two locations; would be handy if it also had the ability to return an N th argument instead of just first or last N; then wouldn't have to use the intermediate index vector.
Or, one can use regexp
Más respuestas (1)
Guillaume
el 19 de Mayo de 2015
Editada: Guillaume
el 19 de Mayo de 2015
In this sort of cases, I would use a regular expression just because it expresses better that you want to extract a portion of the string that conform to a particular pattern.
It's not obvious from the question what that pattern is. Assuming it is: 1 or more alphabetic characters, an underscode, one or more numbers, before another underscore, then:
s = 'inv_1000061014358_20150424_115235';
ss = regexp(s, '^[a-z]+_\d+(?=_)', 'match', 'once')
If regular expressions look too daunting then dpb's answer is the way to go.
Ver también
Categorías
Más información sobre String Parsing en Help Center y File Exchange.
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!