Sorting cell array of strings wrt. a character

1 view (last 30 days)
Say I have:
SM={'JJ','AKs','TT','AQs','AKo','AJs','KQs','99','ATs','AQo'}
and I would like to sort it wrt. {XXs}, {YYo} and {the remaining strings} (i.e. strings without 's' or 'o'). How can that be done?

Accepted Answer

Sean de Wolski
Sean de Wolski on 5 Jun 2012
SM={'JJ','AKs','TT','AQs','AKo','AJs','KQs','99','ATs','AQo'}
idx = cellfun(@(x)any(ismember('so',x)),SM); %which ones have s or o?
v = 1:numel(SM); %index vector
SM([v(~idx) v(idx)]) %extract

More Answers (1)

Andrei Bobrov
Andrei Bobrov on 5 Jun 2012
k = cell2mat(cellfun(@(x)find(~cellfun('isempty',regexp(SM,x))),{'s' 'o'},'un',0))
out = SM([k setdiff(1:numel(SM),k)])

Categories

Find more on Shifting and Sorting Matrices in Help Center and File Exchange

Community Treasure Hunt

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

Start Hunting!