我有一个包含两条信息的连接字符串。字符串中的最后三个字符是一个数字。我在一个数组中有大约 10 个,我想通过在最低索引处具有最大数字的字符串来对数组进行排序。
如何对这样的数组进行排序(按最后三个字符整数值)?
我有一个包含两条信息的连接字符串。字符串中的最后三个字符是一个数字。我在一个数组中有大约 10 个,我想通过在最低索引处具有最大数字的字符串来对数组进行排序。
如何对这样的数组进行排序(按最后三个字符整数值)?
没有内置函数可以按字符串对象的最后三个字符对数组进行排序,因为它太具体了。但我们总是可以分解手头的问题。
首先是如何对数组进行排序。有很多方法可以做到这一点,例如,如下所述:如何对包含自定义对象的 NSMutableArray 进行排序?
假设我们将继续使用块的最后一个闪亮选项。
现在,您的特定情况的第二个问题是您需要从字符串中获取最后三个字符。可以从这里获得如何执行此操作的示例:如何从 NSString 中捕获最后 4 个字符
把它们放在一起:
NSArray *sortedArray = [array sortedArrayUsingComparator:^NSComparisonResult(id a, id b) {
NSString *first = [(NSString*)a substringFromIndex:[a length]-3];
NSString *second = [(NSString*)b substringFromIndex:[b length]-3];
return [second compare:first];
}];
您可以尝试类似:(此代码未经测试)
NSArray *unorderedArray; //This is your array
NSArray *orderedArray = [unorderedArray sortedArrayUsingComparator: ^(id obj1, id obj2) {
NSString *string1 = [(NSString *)obj1;
NSString *string2 = (NSString *)obj2;
string1 = [string1 substringFromIndex:[string1 length] - 3]; //3 last chars
string2 = [string2 substringFromIndex:[string2 length] - 3]; //3 last chars
return [string2 compare:string1];
}];