How to extract only part of a file name

조회 수: 32 (최근 30일)
Inês Mendes
Inês Mendes 2015년 5월 19일
댓글: Inês Mendes 2015년 5월 19일
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!!!!

채택된 답변

dpb
dpb 2015년 5월 19일
편집: dpb 2015년 5월 19일
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개)

Guillaume
Guillaume 2015년 5월 19일
편집: Guillaume 2015년 5월 19일
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.

카테고리

Help CenterFile Exchange에서 Just for fun에 대해 자세히 알아보기

Community Treasure Hunt

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

Start Hunting!

Translated by