MATLAB Answers

any easier way to find cell by string

1 ビュー (過去 30 日間)
Yu Li
Yu Li 2019 年 5 月 15 日
コメント済み: James Tursa 2019 年 5 月 15 日
Hi:
I have a cell array like below:
A{1}='test1a';
A{2}='test2a';
A{3}='test3a';
A{4}='test4a';
A{5}='test1b';
A{6}='test2b';
A{7}='test3b';
A{8}='test4b';
...
I want to find the location where 'test*a' are at, in this case, it should be 1,2,3,4
Yes, I can write a for-loop to read-justify cell in this array one by one, but I want know if there is any easier way to do this? such as
strfind(A,'test*a')
of course this is not available in Matlab
Thanks!
Yu

  0 件のコメント

Sign in to comment.

採用された回答

James Tursa
James Tursa 2019 年 5 月 15 日
編集済み: James Tursa 2019 年 5 月 15 日
Assuming the strings all start with 'test', e.g.
find(cellfun(@(C)C(end)=='a',A))

  3 件のコメント

Yu Li
Yu Li 2019 年 5 月 15 日
Sorry I do not state the problem clearly, the start is not determined
Yu Li
Yu Li 2019 年 5 月 15 日
However, I think your answer provide a solution.... I can operate with your answer twice and then solution is found:
a=find(cellfun(@(C)C(end)=='a',A));
b=find(cellfun(@(C)C(end)=='test',A));
intersect(a,b)
Thanks!
Yu
James Tursa
James Tursa 2019 年 5 月 15 日
Well, I think you would need to do something like this instead:
find(cellfun(@(C)numel(C)>4 && strcmp(C(1:4),'test') && C(end)=='a',A))
But really what is needed is an Answer from someone who knows regexp( ) well (and that isn't me).

Sign in to comment.

その他の回答 (0 件)


Translated by