我有一个字符串数组,看起来像这样
"/var/folders/zy/zy4FzDGQEUuq9jZ1hTRFHk+++TI/-Tmp-/tarDir0172809001305545247/0516_GTB_HP_01.pdf"
"/var/folders/zy/zy4FzDGQEUuq9jZ1hTRFHk+++TI/-Tmp-/tarDir0172809001305545247/0516_ETB_HP_28.pdf"
如您所见,tehy因数字和字符G
或E
而异。
当我按照这样对它们进行排序时,它们按GTB
/ ETB
排序,然后按最后的数字排序。但我想要的是首先让它们按数字排序,然后按字母E或G排序。
我应该提到的是,可能会出现最终具有相同数字的字符串,只是G
或E
不同。
所以我想到的可能只是简单地用字符ETB
或GTB
交换数字。
最优雅的方式是什么?
或者你还有其他建议吗?
谢谢!
答案 0 :(得分:1)
您可以在NSArray或NSMutableArray中使用自定义比较器进行排序。在该函数内部,您可以将字符串拆分为多个部分,并按照您想要的方式进行比较(首先是数字,如果它们与GTB / ETB相等)
答案 1 :(得分:1)
如果您可以定位iOS 4.x及更高版本,则可以使用块
NSArray *sortedArray = [array sortedArrayUsingComparator: ^(id obj1, id obj2) {
// obj1 and obj2 are 2 strings from you array
// here you write your own logic to understand if obj1 <=> obj2
// here's an example in pseudo code
if (obj1 > obj2)
return (NSComparisonResult)NSOrderedDescending;
if (obj1 < obj2)
return (NSComparisonResult)NSOrderedAscending;
return (NSComparisonResult)NSOrderedSame;
}];