美文网首页
iOS 中文排序

iOS 中文排序

作者: 突刺刺 | 来源:发表于2018-06-01 14:59 被阅读118次

需求:中文排序

方法一

- (NSArray *)charactersOrder1:(NSArray*)array
{
    NSSortDescriptor * sort = [NSSortDescriptor sortDescriptorWithKey:@"pinyin" ascending:YES];
    NSArray *newArray = [NSArray arrayWithObject:sort];
    return [array sortedArrayUsingDescriptors: newArray];
}

方法二

- (NSArray *)charactersOrder2:(NSArray*)array
{
     NSStringCompareOptions comparisonOptions = NSCaseInsensitiveSearch|NSNumericSearch|NSWidthInsensitiveSearch|NSForcedOrderingSearch;
     NSComparator sort = ^(NSString *obj1,NSString *obj2){
     NSString *pinyin1 = [obj1 pinyin];/*获取obj1的首字母*/
     NSString *pinyin2 = [obj2 pinyin];/*获取obj2的首字母*/
     NSRange range = NSMakeRange(0,pinyin1.length);
     return [pinyin1 compare:pinyin2 options:comparisonOptions range:range];
     };
     return [self sortedArrayUsingComparator:sort];
}

/*获取中文的首字母*/
- (NSString *)pinyin
{
    NSMutableString *source = [self mutableCopy];
    CFStringTransform((CFMutableStringRef)source, NULL, kCFStringTransformMandarinLatin, NO);
    CFStringTransform((CFMutableStringRef)source, NULL, kCFStringTransformStripDiacritics, NO);//这一行是去声调的
    return source;
}

方法三 记录,有疑问

- (NSArray *)charactersOrder2:(NSArray*)array
{
    return [array sortedArrayUsingSelector:@selector(localizedCompare:)];
}

对比三种方法的结果

- (void)test
{
     NSArray *city = @[@"北京", @"广州",@"深圳",@"上海", @"重庆"];
    NSArray *city1  = [self charactersOrder1: city];//@"方法1"
    NSArray *city2  = [self charactersOrder2: city];//@"方法2"
    NSArray *city3  = [self charactersOrder3: city];//@"方法3"
    NSLog(@"city1 %@",city1);
    NSLog(@"city2 %@",city2);
    NSLog(@"city3 %@",city3);

}

打印

 city1 = (
    北京,
    重庆,
    广州,
    上海,
    深圳,
)
 city2 = (
    北京,
    重庆,
    广州,
    上海,
    深圳,
)
 city3 = (
    上海,
    北京,
    广州,
    深圳,
    重庆,
)

区别

  • 方法一调用简单,处理快速,如果只需拿到排序后的结果,不需要知道中文拼音,就用这个方法。
  • 方法二的block中,获取中文拼音是调用系统的方法,这个方法效率低下,在处理数据量大的时候,十分慢,戳这里-->iOS 获取中文拼音
  • 方法三可以看到,结果是乱序,万能的网友,请求指教为什么是乱序,戳这里-->参考自原博文

相关文章

  • iOS 中文排序

    需求:中文排序 方法一 方法二 方法三 记录,有疑问 对比三种方法的结果 打印 区别 方法一调用简单,处理快速,如...

  • 排序中文数组 iOS

    冒泡排序方法实现数组排序,数组中元素为中文字符串,方法如下: 参考:ios汉字转拼音iOS解决NSArray、NS...

  • iOS-中文排序

    中文排序想想就心累,之前尝试过很多方法也用过某些框架,但是效果并不好。 偶然看到一个方法 输出为: 中文转拼音的方...

  • iOS 中文数组排序

    直接上代码: 汉子转拼音 判断是否是为纯汉子: 判断是否含有汉子

  • ios 数组排序 中文

    1.数组排序 支持中文 2.多条件排序 如果用中文的key 排序结果可能不正确

  • iOS 中文排序、数组、字典排序

    数组内中文排序 看够了复杂的中文排序封装代码,让我们来点小清新,其实苹果不但为我们提供好了排序方法,并且带有多音字...

  • iOS collectionView拖拽排序

    iOS collectionView拖拽排序 iOS collectionView拖拽排序

  • iOS 中文按字母排序

    主要代码 效果打印 demo下载

  • iOS算法总结-堆排序

    iOS算法总结-堆排序 iOS算法总结-堆排序

  • iOS算法总结-冒泡排序

    iOS算法总结-冒泡排序 iOS算法总结-冒泡排序

网友评论

      本文标题:iOS 中文排序

      本文链接:https://www.haomeiwen.com/subject/gimhsftx.html