排序中文數組 iOS 轉載自桐丘

感謝桐丘的方法,可以實現排序。
冒泡排序方法實現數組排序,數組中元素為中文字符串,方法如下:

//數組排序
- (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
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容

  • 概述:排序有內部排序和外部排序,內部排序是數據記錄在內存中進行排序,而外部排序是因排序的數據很大,一次不能容納全部...
    每天刷兩次牙閱讀 3,743評論 0 15
  • 概述 排序有內部排序和外部排序,內部排序是數據記錄在內存中進行排序,而外部排序是因排序的數據很大,一次不能容納全部...
    蟻前閱讀 5,220評論 0 52
  • *面試心聲:其實這些題本人都沒怎么背,但是在上海 兩周半 面了大約10家 收到差不多3個offer,總結起來就是把...
    Dove_iOS閱讀 27,211評論 30 472
  • 秋天是黃色的,今天上學的路上,我看見了樹葉都變黃了,都落在地上了,天氣也變涼了,我也穿上了厚厚的衣服了,...
    愛自己最快樂閱讀 584評論 0 8
  • 敲黑板了!叩叩叩~要考的啊!快醒醒!后排的同學別看手機了,看過來!很多人會很疑惑,市場上有這樣那樣的霜和乳和液還有...
    俊鵬被鳳梨酥噎到閱讀 1,419評論 0 0