gpt4 book ai didi

iphone - 使用特殊字符对数组进行排序 - iPhone

转载 作者:行者123 更新时间:2023-12-03 20:26:49 24 4
gpt4 key购买 nike

我有一个包含法语字符串的数组,可以说:“égrener”和“exact”我想对其进行排序,例如 égrener 是第一个。当我这样做时:

NSSortDescriptor *descriptor = [[NSSortDescriptor alloc] initWithKey:@"name" ascending:YES];
NSArray *sortDescriptors = [NSArray arrayWithObject:descriptor];
NSArray *sortedArray = [myArray sortedArrayUsingDescriptors:sortDescriptors];

我在列表末尾看到 é...我该怎么办?

谢谢

最佳答案

NSString 中有一个方便的方法,可以让你轻松地进行这种类型的排序:

NSArray *sortedArray = [myArray sortedArrayUsingSelector:@selector(localizedCaseInsensitiveCompare:)];

NSString 的底层比较方法 ( compare:options:range:locale: ) 为您提供了更多关于如何进行排序的选择。

编辑:这是一个长故事:

首先,定义一个比较函数。这对于自然字符串排序很有用:

static NSInteger comparator(id a, id b, void* context)
{
NSInteger options = NSCaseInsensitiveSearch
| NSNumericSearch // Numbers are compared using numeric value
| NSDiacriticInsensitiveSearch // Ignores diacritics (â == á == a)
| NSWidthInsensitiveSearch; // Unicode special width is ignored

return [(NSString*)a compare:b options:options];
}

然后,对数组进行排序。

    NSArray* myArray = [NSArray arrayWithObjects:@"foo_002", @"fôõ_1", @"fôõ_3", @"foo_0", @"foo_1.5", nil];
NSArray* sortedArray = [myArray sortedArrayUsingFunction:comparator context:NULL];

示例中的数组包含一些有趣的字符:数字、变音符号以及 unicode 范围 ff00 中的一些字符。最后一种字符类型看起来像 ASCII 字符,但以不同的宽度打印。

所使用的比较函数以人类可预测的方式处理所有情况。排序后的数组具有以下顺序:

foo_0
fôõ_1
foo_1.5
foo_002
fôõ_3

关于iphone - 使用特殊字符对数组进行排序 - iPhone,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2492379/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com