Sorting cell array of strings wrt. a character

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

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)

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

Categories

Community Treasure Hunt

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

Start Hunting!