2

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

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

4

2 回答 2

1

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

首先是如何对数组进行排序。有很多方法可以做到这一点,例如,如下所述:如何对包含自定义对象的 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];
}];
于 2013-06-03T02:26:09.433 回答
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];
}];
于 2013-06-03T02:25:42.663 回答