按字符串中包含的整数值对数组进行排序

时间:2013-06-03 00:23:26

标签: objective-c

我有一个包含两条信息的连接字符串。字符串中的最后三个字符是数字。我在数组中有大约10个,我想通过在最低索引处使用最大数字的字符串来对数组进行排序。

如何对这样的数组进行排序(通过最后三个字符整数值)?

2 个答案:

答案 0 :(得分:1)

没有内置函数可以按字符串对象的最后三个字符对数组进行排序,因为它太具体了。但我们总能解决手头的问题。

首先是如何对数组进行排序。有很多方法可以做到这一点,例如,如下所述:How to sort an NSMutableArray with custom objects in it?

假设我们将继续使用最后一个使用块的闪亮选项。

现在,针对您的特定情况的第二个问题是您需要从字符串中获取最后三个字符。可以从此处获取如何执行此操作的示例:how to capture last 4 characters from NSString

全部放在一起:

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];
}];

答案 1 :(得分:0)

您可以尝试以下内容:(此代码未经过测试)

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];
}];