I have a char array of strings (each string is a file name) and I would like to find out the strings that ends with xls or xlsx. I know that strcmp can be used only if to compare the first few characters, which is the opposite of what I intent to do---compare the last few characters.
What should I do in this case? Thank you.

 채택된 답변

Azzi Abdelmalek
Azzi Abdelmalek 2016년 7월 13일
편집: Azzi Abdelmalek 2016년 7월 13일

1 개 추천

str='abc.xlsx xls.m df.xls er.doc sd.xls'
out=regexp(str,'\S+\.xlsx?\>','match')

댓글 수: 6

chlor thanks
chlor thanks 2016년 7월 13일
편집: chlor thanks 2016년 7월 13일
This actually did not work when I tried
str={'abc.xlsx', 'ppt.xls.m', 'df.xls', 'er.doc sd.xls'}
out=regexp(str,'\S+\.xlsx?\>')
which returns
str =
'abc.xlsx' 'ppt.xls.m' 'df.xls' 'er.doc sd.xls'
out =
[1] [1] [1] [8]
I only want to find files in a cell array that ends in xls or xlsx, therefore the second cell should be empty instead of 1. Also, I am a little confused why is the last cell returns 8 instead of a logical value?
Thank you as always!
You have changed my code
str={'abc.xlsx', 'ppt.xls.m', 'df.xls', 'er.doc sd.xls'}
out=regexp(str,'\S+\.xlsx?\>','match','once')
chlor thanks
chlor thanks 2016년 7월 14일
편집: chlor thanks 2016년 7월 14일
sorry, I worded it confusingly so there is a misunderstanding. Your code works perfectly to return this
str =
'abc.xlsx' 'ppt.xls.m' 'df.xls' 'er.doc sd.xls'
out =
'abc.xlsx' 'ppt.xls' 'df.xls' 'sd.xls'
However I wish it could return this
str =
'abc.xlsx' 'ppt.xls.m' 'df.xls' 'er.doc sd.xls'
out =
'abc.xlsx' 'df.xls' 'er.doc sd.xls'
out=regexp(str,'\S+\.xlsx?\>$','match','once')
I would use this simpler regex:
regexp(str, '\.xlsx?$', 'match', 'once')
Matches '.xls', followed by an optional 'x', followed by the end of the string.
chlor thanks
chlor thanks 2016년 7월 14일
Thank you both! Especially for the notes Guillaume I really appreciate it!

댓글을 달려면 로그인하십시오.

추가 답변 (1개)

Star Strider
Star Strider 2016년 7월 13일

1 개 추천

The findstr function may do what you want:
fn = 'filename.xlsx';
xls_pos = findstr(fn,'xls')
xls_pos =
10
So if ‘xls_pos’ (in this example) is not empty, the string contains ‘xls’ or ‘xlsx’.

댓글 수: 2

chlor thanks
chlor thanks 2016년 7월 13일
편집: chlor thanks 2016년 7월 13일
Thank you for sharing Star!
Star Strider
Star Strider 2016년 7월 13일
My pleasure!

댓글을 달려면 로그인하십시오.

카테고리

도움말 센터 및 File Exchange에서 Holidays / Seasons에 대해 자세히 알아보기

질문:

2016년 7월 13일

댓글:

2016년 7월 14일

Community Treasure Hunt

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

Start Hunting!

Translated by