finding a string in a cell array

조회 수: 4 (최근 30일)
wesso Dadoyan
wesso Dadoyan 2016년 6월 22일
댓글: Azzi Abdelmalek 2016년 6월 22일
ids1='519448(EPS1MN)' '519448(EPS2MN)' '519448(EPS3MN)' '519448(EPS4MN)' '519448(EPS5MN)' '519448(LTMD)' '519448(P)' '519448(DPS)' '519448(EPS)'
I want to find the cell that has embedded in it EPS1MN ,....EPS5MN
writing the following codes:
x2a=find(~isempty(strfind(ids1,'EPS1MN'))); % select rows.
x2b=find(~isempty(strfind(ids1,'EPS2MN')));
x2c=find(~isempty(strfind(ids1,'EPS3MN')));
x2d=find(~isempty(strfind(ids1,'EPS4MN')));
x2e=find(~isempty(strfind(ids1,'EPS5MN')));
is returning a value of 1 for x2a...x2e which is obviously wrong since the answers should be 1,2,...5
I am wondering what went wrong?
  댓글 수: 2
Azzi Abdelmalek
Azzi Abdelmalek 2016년 6월 22일
wesso commented
the two answers work well with EPS1...EPS5 but they fail to identify the cell when the cell is (P). (i.e I want the answer to identify cell '519448(P)' and gets an answer of 7. Any help with this?
Azzi Abdelmalek
Azzi Abdelmalek 2016년 6월 22일
If we give you the solution with (P), you will ask again it's not working with (T) or another string!

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

채택된 답변

Azzi Abdelmalek
Azzi Abdelmalek 2016년 6월 22일
ids1={'519448(EPS1MN)'
'519448(EPS2MN)'
'519448(EPS3MN)'
'519448(EPS4MN)'
'519448(EPS5MN)'
'519448(LTMD)'
'519448(P)'
'519448(DPS)'
'519448(EPS)'}
out=find(~cellfun(@isempty,regexp(ids1,'EPS[12345]MN')))

추가 답변 (1개)

Thorsten
Thorsten 2016년 6월 22일
out = find(cell2mat(regexp(ids1, 'EPS[1-5]MN')))

카테고리

Help CenterFile Exchange에서 Characters and Strings에 대해 자세히 알아보기

Community Treasure Hunt

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

Start Hunting!

Translated by