Sorting a cell of strings using a certain character position

Dear all
I have a variable called var=
vart=[{'Ice011_L_3of3m.mat''}; {'Ice011_P_1of3m.mat'} ;{'Ice011_P_2of3m.mat'}]
We would need to sort the strings in the cell array using the 10th character of each string, so we would get the following result
var_sorted =[{'Ice011_P_1of3m.mat'}; {'Ice011_P_2of3m.mat'} ;{'Ice011_L_3of3m.mat'}]
Many thanks in advance
paramonte

 採用された回答

Stephen23
Stephen23 2019 年 2 月 22 日
編集済み: Stephen23 2019 年 2 月 22 日

0 投票

Simpler in two lines:
vart = {'Ice011_L_3of3m.mat';'Ice011_P_1of3m.mat';'Ice011_P_2of3m.mat'}
[~,idx] = sort(cellfun(@(v)v(10),vart));
vart = vart(idx)
If you need to match more than one digit you could use a regular expression, e.g.:
[~,idx,] = sort(str2double(regexp(vart,'(?<=_)\d+','match','once')));

1 件のコメント

Paramonte
Paramonte 2019 年 2 月 25 日
Thanks a lot for your time.
This has worked perfectely

サインインしてコメントする。

その他の回答 (0 件)

カテゴリ

ヘルプ センター および File ExchangeShifting and Sorting Matrices についてさらに検索

質問済み:

2019 年 2 月 22 日

コメント済み:

2019 年 2 月 25 日

Community Treasure Hunt

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

Start Hunting!

Translated by