How to extract only part of a file name
32 visualizzazioni (ultimi 30 giorni)
Mostra commenti meno recenti
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 Commenti
Risposta accettata
dpb
il 19 Mag 2015
Modificato: dpb
il 19 Mag 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
Più risposte (1)
Guillaume
il 19 Mag 2015
Modificato: Guillaume
il 19 Mag 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.
Vedere anche
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!