Effacer les filtres
Effacer les filtres

How to extract only part of a file name

25 vues (au cours des 30 derniers jours)
Inês Mendes
Inês Mendes le 19 Mai 2015
Commenté : Inês Mendes le 19 Mai 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!!!!

Réponse acceptée

dpb
dpb le 19 Mai 2015
Modifié(e) : dpb le 19 Mai 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
  1 commentaire
Inês Mendes
Inês Mendes le 19 Mai 2015
Thank you so much!:)

Connectez-vous pour commenter.

Plus de réponses (1)

Guillaume
Guillaume le 19 Mai 2015
Modifié(e) : Guillaume le 19 Mai 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.
  1 commentaire
Inês Mendes
Inês Mendes le 19 Mai 2015
Thanks!Both options work fine :)

Connectez-vous pour commenter.

Catégories

En savoir plus sur Characters and Strings dans Help Center et File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by