我有一个"房间"对象,每个对象都有一个名为" room.descritpion"这是一个包含字母数字字符组合的NSString。这些房间需要使用" room.description"属性按升序字母顺序,然后按数字顺序递增。我可以轻松地完成字母排序,但我正在努力解决如何合并第二种排序,这种排序将基于字母后面的数字,例如L21 L19 A34 A12应在阵列中订购为A12,A34,L19,L21等。搜索的优先级应该是字母,然后是数字,所以只有数字的房间出现在数组的末尾。字母和数字并不总是以相同的顺序,即字母并不总是第一个。我已经彻底阅读了文档,但似乎无法找到解决方法。我很乐意使用块,如果它使过程更容易。任何帮助将不胜感激。
答案 0 :(得分:2)
NSArray *unorderedTitles = [NSArray arrayWithObjects:@"L21",@"L19",@"A34",@"A12",@"A1", nil];
NSArray *orderedTitles = [unorderedTitles sortedArrayUsingSelector:@selector(localizedStandardCompare:)];
NSLog(@"orderedTitles %@",orderedTitles);
答案 1 :(得分:1)
此
var arr = ["A6", "A2", "3", "B4", "L8", "4", "B7"]
let sortedArr = arr.sort({String($0) < String($1)})
print(sortedArr)
将打印出来
["3", "4", "A2", "A6", "B4", "B7", "L8"]