麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 學院 > 開發設計 > 正文

iOS-漢字排序

2019-11-14 18:20:30
字體:
來源:轉載
供稿:網友

* 在IOS開發過程中,排序是我們經常遇到的問題,那么如何進行排序呢?

* 在英文狀態下,系統中有直接可以調用的方法。

   例如:對數組[sss, aaa, bbb, ppp]進行排序,我們可以直接使用系統方法。

1 NSMutableArray * array = [[NSMutableArray alloc]initWithObjects:@"sss",@"aaa",@"bbb",@"ppp",nil];2 array = (NSMutableArray *)[array sortedArrayUsingSelector:@selector(compare:)];3 NSLog(@"%@",array);

   上面代碼的運行結果為:aaa, bbb, ppp, sss

* 但是如果上面的數組中出現漢語字符,排序就會出現問題,那么在漢語數組中如何進行排序呢?

    在漢字字符串排序,因為編碼問題,不能直接對漢字字符串進行直接排序。

    想要對漢字進行排序,我們需要做一下準備。

    1.將漢字轉化成相應的拼音。

    2.根據拼音將漢字排序。

一:漢字轉化成相應的拼音:(例如:"編碼改變世界"要轉化成“bianmagaibianshijie”)

將漢語轉化成拼音,有很多方法,有第三方庫實現,也有系統自帶的方法實現。

第三方轉化的比較常用的是由George編寫的,使用起來比較方便,這個庫轉化是將漢字轉化成漢字的拼音首字母。有興趣的同學可以自行搜索這個文件。

將漢字轉化成拼音,系統為我們提供了這一個方法,使用起來非常的方便,既然系統有這個方法,何必再找第三方庫呢?

下面是將漢字轉化成拼音的代碼:

 

 NSMutableString *mutableString = [NSMutableString stringWithString:@"編碼改變世界"]; CFStringTransform((CFMutableStringRef)mutableString, NULL, kCFStringTransformToLatin, false); CFStringTransform((CFMutableStringRef)mutableString, NULL, kCFStringTransformStripDiacritics, false); NSLog(@"%@",mutableString);

 

  上面代碼的運行結果為:bian ma gai bian shi jie

可以看出上面的結果中間中間有很多的空格,我們在排序的過程中需要將中間的空格去掉。代碼如下:

 mutableString =(NSMutableString *)[mutableString stringByReplacingOccurrencesOfString:@" " withString:@""];

到此為止我們已經將漢字轉化成相應的拼音了,但是如何根據拼音將漢字排序呢?

二.根據漢語拼音將數組排序;例如漢字為[“馬云”,“諸葛亮”,“王朝陽”],拼音為:[‘mayun’,'zhugeliang','wangzhaoyang']

我們想要得到的順序應該是[“馬云,”“王朝陽”,“諸葛亮”],這樣的順序,現在我們怎樣根據拼音將漢字數組排序呢?

說道此處,我們不得不提一個類,它就是NSSortDescroptor,關于這個類的方法理論在此不具體詳述,僅用代碼演示它的作用。

首先我們先創建一個新的類:people,他有兩個屬性,一個Chinese,一個pinYin

分別代表漢字,和拼音。

代碼如下:(在此假設漢字已經轉化成拼音)

 1 NSMutableArray *array = [[NSMutableArray alloc]init]; 2 NSArray *arrayChinese = [NSArray arrayWithObjects:@"馬云",@"諸葛亮",@"王朝陽", nil]; 3 NSArray *arrayPinyin = [NSArray arrayWithObjects:@"mayun",@"zhugeliang",@"wangzhaoyang", nil]; 4 for (int i = 0; i < arrayChinese.count; i ++) 5 { 6         people *p = [[people alloc]init]; 7         p.chinese = arrayChinese[i]; 8         p.pinyin = arrayPinyin[i]; 9         [array addObject:p];10 }11 NSArray *sortDescriptors = [NSArray arrayWithObject:[NSSortDescriptor sortDescriptorWithKey:@"pinyin" ascending:YES]];12     [array sortUsingDescriptors:sortDescriptors];13 for (int i = 0; i < arrayChinese.count; i ++)14 {15         people *p = array[i];16         NSLog(@"----%@",p.chinese);17 }

    上述代碼運行結果為:馬云,王朝陽,諸葛亮

 

 

 

 

 

   


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 久久精品视频亚洲 | 精品亚洲免费 | 羞羞视频免费观看网站 | 91网站在线播放 | 国产妇女乱码一区二区三区 | 青青青在线免费 | 成人一区二区三区在线 | 免费高潮在线国 | 亚洲精品欧美在线 | 日日草夜夜操 | 色人阁导航 | 久久99国产精品视频 | 依人在线视频 | 亚洲一区二区三区高清 | 91精品国产手机 | 永久免费av在线 | 黄色av.com | 男女亲热网站 | 日韩不卡一区二区 | 国产91精品一区二区麻豆亚洲 | 高清国产午夜精品久久久久久 | 久久精品久 | 精品一区二区久久久 | 欧洲黄视频 | 欧美黄色一级带 | 亚洲日本韩国在线观看 | 斗破苍穹在线免费 | 色污视频在线观看 | 美国av免费看 | 久久96国产精品久久秘臀 | 免费视频a| 毛片在线免费播放 | 久久人添人人爽人人爽人人片av | 久久亚洲美女视频 | 久久久久久久久久亚洲 | 午色影院 | 午夜爽爽爽男女免费观看hd | 久久男| 成年免费视频黄网站在线观看 | 成人一级免费 | 免费激情网址 |