any easier way to find cell by string

1 vue (au cours des 30 derniers jours)
Yu Li
Yu Li le 15 Mai 2019
Commenté : James Tursa le 15 Mai 2019
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

Réponse acceptée

James Tursa
James Tursa le 15 Mai 2019
Modifié(e) : James Tursa le 15 Mai 2019
Assuming the strings all start with 'test', e.g.
find(cellfun(@(C)C(end)=='a',A))
  3 commentaires
Yu Li
Yu Li le 15 Mai 2019
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 le 15 Mai 2019
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).

Connectez-vous pour commenter.

Plus de réponses (0)

Catégories

En savoir plus sur Characters and Strings dans Help Center et File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by