如下所示,当字符串包含方括号时,排序后的数组未按正确的升序排列。有办法解决这个问题吗?
坏
输入:
A = {'[Test2]','[Test]','[Test1]'}
sort(A)
输出:
'[Test1]' '[Test2]' '[Test]'
好
输入:
A = {'Test2','Test','Test1'}
sort(A)
输出:
'Test' 'Test1' 'Test2'
答案 0 :(得分:3)
正如评论所解释的那样,由于1
或2
在]
之前,结果是预期的:
sort(']1')
ans =
'1]'
如果要忽略单元格元素中的括号,可以执行
A1 = regexprep(A, ']$', ''); % remove ending ']'
[~, ind] = sort(A1);
A_sorted = A(ind);
答案 1 :(得分:2)
您可以连接单元格数组,然后使用定界符[
和]
拆分字符串,以形成不包含方括号的字符串单元格数组,并对单元格进行排序,然后使用排序后的元素以对原始单元格数组进行重新排序。
str = [A{:}];
[~,idx] = sort(strsplit(str(2:end-1), {'[',']'}));
result = A(idx)