想要對漢字進行排序,我們需要做一下準備。
1.將漢字轉化成相應的拼音。
2.根據拼音將漢字排序。
一:漢字轉化成相應的拼音:(例如:"編碼改變世界"要轉化成「bianmagaibianshijie」)
將漢語轉化成拼音,有很多方法,有第三方庫實現,也有系統自帶的方法實現。
第三方轉化的比較常用的是由george編寫的,使用起來比較方便,這個庫轉化是將漢字轉化成漢字的拼音首字母。有興趣的同學可以自行搜尋這個檔案。
將漢字轉化成拼音,系統為我們提供了這乙個方法,使用起來非常的方便,既然系統有這個方法,何必再找第三方庫呢?
下面是將漢字轉化成拼音的**:
nsmutablestring *mutablestring = [nsmutablestring stringwithstring:@"上面**的執行結果為:bian ma gai bian shi jie編碼改變世界"];
cfstringtransform((cfmutablestringref)mutablestring, null, kcfstringtransformtolatin,
false
); cfstringtransform((cfmutablestringref)mutablestring, null, kcfstringtransformstripdiacritics,
false
); nslog(
@"%@
",mutablestring);
可以看出上面的結果中間中間有很多的空格,我們在排序的過程中需要將中間的空格去掉。**如下:
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];
4for (int i = 0; i < arraychinese.count; i ++)
511 nsarray *sortdescriptors = [nsarray arraywithobject:[nssortdescriptor sortdescriptorwithkey:@"
pinyin
"ascending:yes]];
12[array sortusingdescriptors:sortdescriptors];
13for (int i = 0; i < arraychinese.count; i ++)
14
漢字按拼音排序
漢字讀音資料庫 中的unihan readings.txt 漢字讀音文件 kmandarin是普通話讀音 通過查詢表將注音符號替換為英文本母,結尾帶乙個數字 usr bin env python3 coding utf 8 trans table def trans s for c in s if ...
MySQL按照漢字的拼音排序
按照漢字的拼音排序,用的比較多是在人名的排序中,按照姓氏的拼音字母,從a到z排序 如果儲存姓名的字段採用的是gbk字符集,那就好辦了,因為gbk內碼編碼時本身就採用了拼音排序的方法 常用一級漢字3755個採用拼音排序,二級漢字就不是了,但考慮到人名等都是常用漢字,因此只是針對一級漢字能正確排序也夠用...
MySQL按照漢字的拼音排序
按照漢字的拼音排序,用的比較多是在人名的排序中,按照姓氏的拼音字母,從a到z排序 如果儲存姓名的字段採用的是gbk字符集,那就好辦了,因為gbk內碼編碼時本身就採用了拼音排序的方法 常用一級漢字3755個採用拼音排序,二級漢字就不是了,但考慮到人名等都是常用漢字,因此只是針對一級漢字能正確排序也夠用...