美文网首页
排序中文数组 iOS 转载自桐丘

排序中文数组 iOS 转载自桐丘

作者: 小轩言 | 来源:发表于2016-05-31 16:29 被阅读41次

感谢桐丘的方法,可以实现排序。
冒泡排序方法实现数组排序,数组中元素为中文字符串,方法如下:

//数组排序
- (void)sortedArrayWithChineseObject:(NSMutableArray *)mArray { 
    for(NSUInteger i = 0; i < mArray.count - 1; i++) { 
      for(NSUInteger j = 0; j < mArray.count - i - 1; j++) { 
          NSString *pinyinFirst = [NSString lowercaseSpellingWithChineseCharacters:mArray[j]]; 
          NSString *pinyinSecond = [NSString lowercaseSpellingWithChineseCharacters:mArray[j + 1]]; 
          //此处为升序排序,若要降序排序,把NSOrderedDescending 换为NSOrderedAscending即可。   
          if(NSOrderedDescending == [pinyinFirst compare:pinyinSecond]) { 
              NSString *tempString = mArray[j]; 
              mArray[j] = mArray[j + 1]; 
              mArray[j + 1] = tempString; 
            } 
         } 
      } 
  //测试
  // NSLog(@"%@", mArray);
}

汉字转拼音,NSString的分类
NSString+ChineseCharactersToSpelling.h

#import <Foundation/Foundation.h>

@interface NSString (ChineseCharactersToSpelling)

+(NSString *)lowercaseSpellingWithChineseCharacters:(NSString *)chinese;

@end

NSString+ChineseCharactersToSpelling.m

#import "NSString+ChineseCharactersToSpelling.h"

@implementation NSString (ChineseCharactersToSpelling)

+(NSString *)lowercaseSpellingWithChineseCharacters:(NSString *)chinese {
    //转成了可变字符串
    NSMutableString *str = [NSMutableString stringWithString:chinese];
    //先转换为带声调的拼音
    CFStringTransform((CFMutableStringRef)str, NULL, kCFStringTransformMandarinLatin, NO);
    //再转换为不带声调的拼音
    CFStringTransform((CFMutableStringRef)str, NULL, kCFStringTransformStripDiacritics, NO);
    //返回小写拼音
    return [str lowercaseString];
}

@end

相关文章

网友评论

      本文标题:排序中文数组 iOS 转载自桐丘

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