MATLAB: How to split alphanumerical string without delimiter

splitting strings

Dear community,
I am dealing with .csv tables which contain one column of strings 'A1';'A2';…;'A100';…;'An';'B1';'B2';…;'B100';…;'Bn';'C1';'C2';…;'C100';…;'Cn';. I need to have them sorted to 'A1';'B1';'C1';'A2';'B2';'C2';…;'A100';'B100';'C100';…;'An';'Bn';'Cn'. After trying sort_nat, natsort, sortrows I tried splitting the strings which I do not know how to do without delimititer like e.g. a semicolon and sort for the numerical part. So, question: how to split strings by character without delimiter and sort by the numerical part? Thank you in adavance.

Best Answer

f = fopen('Data20161014.csv'); % Data20161014.csv - your csv file
c = textscan(f,'%s','delimiter','\n');
fclose(f);
[~,ii] = sort(str2double(regexp(c{:},'\d+','match','once')));
out = c{:}(ii);