Find cell containing part of a string

18 visualizaciones (últimos 30 días)
KAE
KAE el 26 de Oct. de 2017
Comentada: KAE el 27 de Oct. de 2017
I would like to find the elements of a cell array that contain part of a specified string.
colorList = {'Red', 'Green', 'Blue', 'Purple'}; % List of values to match with
stringToCheck = 'Blue 23948723'; % String we are trying to match
I would like to return index=3 of colorList since that entry contains the stringToCheck text of 'Blue'. How can I do this?

Respuesta aceptada

Cedric
Cedric el 26 de Oct. de 2017
Editada: Cedric el 26 de Oct. de 2017
If you cannot assume that keywords are separated by white spaces:
>> find(cellfun(@(x)~isempty(strfind(stringToCheck,x)), colorList))
ans =
3
  2 comentarios
KAE
KAE el 26 de Oct. de 2017
Editada: KAE el 26 de Oct. de 2017
They may not be, I hadn't thought of that so thanks.
Cedric
Cedric el 26 de Oct. de 2017
My pleasure!

Iniciar sesión para comentar.

Más respuestas (2)

per isakson
per isakson el 26 de Oct. de 2017
Editada: per isakson el 26 de Oct. de 2017
>> find( ismember( colorList, strsplit( stringToCheck ) ) )
ans =
3
or
>> find( ismember( colorList, strsplit( stringToCheck, {'\s','\.',','} ...
, 'CollapseDelimiters',true, 'DelimiterType','RegularExpression' ) ) )
ans =
3
if the color name is followed by a period or comma, e.g. "Blue.". And what about upper and lower case, e.g "blue"? And "Bluetooth"?
  1 comentario
KAE
KAE el 26 de Oct. de 2017
Thank you, this works and your scenarios are useful too.

Iniciar sesión para comentar.


Akira Agata
Akira Agata el 26 de Oct. de 2017
If your MATLAB is R2016b or later version, you can use contains function, like:
idx = cellfun(@(x) contains(stringToCheck,x),colorList);
The answer is:
>> colorList(idx)
ans =
{'Blue'}
  1 comentario
KAE
KAE el 27 de Oct. de 2017
Thank you, this syntax is easier to read and thus remember than then other ones.

Iniciar sesión para comentar.

Etiquetas

Community Treasure Hunt

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

Start Hunting!

Translated by