How to re-order a string array?

10 views (last 30 days)
james Green
james Green on 11 Apr 2022
Commented: Paul on 11 Apr 2022
currently the files are orderd like this, the value increasing by 30 each time up to 1830:
however, with the code i've used, matlab orders the files like this:
is there any way i can sort the files to match the original?
dirName = pwd;
files = dir( fullfile(dirName,'*.txt') );
files = {files.name}';
files = sortrows(files,'ascend')

Accepted Answer

Stephen23
Stephen23 on 11 Apr 2022
Edited: Stephen23 on 11 Apr 2022
P = pwd;
S = dir(fullfile(P,'*.txt'));
C = {S.name};
[~,X] = sort(str2double(regexp(C,'\d+','match','once')));
C = C(X);
  1 Comment
Paul
Paul on 11 Apr 2022
Or
C = string{S.name});
[~,X] = sort(double(extractBetween(C,"_",".txt")));
C = C(X);
for those of us who can't get our minds around patterns and regexp.

Sign in to comment.

More Answers (1)

DGM
DGM on 11 Apr 2022
  1 Comment
james Green
james Green on 11 Apr 2022
thanks that works perfectly, however this is part of an uni assignment which i can only subbmit one .m file for, so i dont think i can use this. im not very familiar with file exchange is there a way to get around this.

Sign in to comment.

Categories

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

Tags

Community Treasure Hunt

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

Start Hunting!