關於漢字拼音排序

2021-07-23 18:38:50 字數 2139 閱讀 6450

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

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];

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個採用拼音排序,二級漢字就不是了,但考慮到人名等都是常用漢字,因此只是針對一級漢字能正確排序也夠用...