MATLAB Answers

Translated by

このページのコンテンツは英語から自動翻訳されています。自動翻訳をオフにする場合は「<a class="turn_off_mt" href="#">ここ</a>」をクリックしてください。

Yu Li
0

any easier way to find cell by string

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 件のコメント

サインイン to comment.

1 件の回答

回答者: 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
2019 年 5 月 15 日
Sorry I do not state the problem clearly, the start is not determined
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
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).

サインイン to comment.



Translated by