gpt4 book ai didi

cocoa - 按匹配出现次数对 NSStrings 的 NSArray 进行排序

转载 作者:行者123 更新时间:2023-12-03 16:55:42 25 4
gpt4 key购买 nike

如何通过搜索模式匹配对 NSArray 进行排序?因此,如果我有一个等于“xd”的搜索模式和一个值数组:

axd
bxd
xdd
gtxd
xdc

如何获得如下输出:

xdc 
xdd
axd
bxd
gtxd

提前谢谢您。

最佳答案

使用 NSArraysortedArrayUsingFunction: 和一个函数,该函数首先按搜索词的位置排序,然后按字符串的自然顺序排序。

NSInteger sorter(id arg1, id arg2, void *context)
{
NSString *searchTerm = (NSString *)context;

NSRange range1 = [arg1 rangeOfString:searchTerm];
NSRange range2 = [arg2 rangeOfString:searchTerm];

if (range1.location < range2.location)
return NSOrderedAscending;
if (range1.location > range2.location)
return NSOrderedDescending;

return [arg1 compare:arg2];
}

NSArray *array = [NSArray arrayWithObjects:@"axd", @"bxd", @"xdd", @"gtxd", @"xdc", nil];
NSArray *sortedArray = [array sortedArrayUsingFunction:sorter context:@"xd"];

打印:

2011-02-15 01:33:49.642 GreatApp[78849:a0f] (
xdc,
xdd,
axd,
bxd,
gtxd
)

关于cocoa - 按匹配出现次数对 NSStrings 的 NSArray 进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5001744/

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