筆記 關於漢字注音 漢字轉拼音,首拼

2021-09-08 12:17:41 字數 2796 閱讀 8006

最近想做乙個快速搜尋的功能,例如qq通訊錄通過數字鍵速查聯絡人

首先要把聯絡人姓名轉化為拼音,然後再進行匹配

1、利用微軟提供的拼音庫,計算出漢字的拼音的方法,此方法支援多音字符

解壓得到chspinyinconv.msi(拼音類庫) 和 chspinyinconv.msi(簡繁體類),安裝(記住安裝路徑)

在專案中新增引用,把chncharinfo.dll 引入進來

新增命名空間,具體用法看vs的提示,這裡只是演示

using microsoft.international.converters.pinyinconverter;

private string topinyin(string hanzi)

else

}return pinyinstr.tolower();

}

2、第二種注音的方法(不支援多音字符)

這種方法是根據中文的編碼方式計算出來的,具體的編碼的話大家自行查閱,這裡講類的定義

public

class

chinesecharutil

return

ht; }

}static

string g(int

num)

static

bool in(int lp, int hp, int

value)

#endregion

//////

獲取漢字拼音,特殊字元去掉,英文不做處理

/// ///

///public

static

string getpinyin(string

hz)

else

}return

ret.tostring();

}//////

獲取漢字拼音的首字母

/// ///

///public

static

string getpinyinindex(string

str)

}return

ret.tostring();

}//////

獲取乙個漢字的拼音聲母

/// ///

unicode格式的乙個漢字

///漢字的聲母

public

static

char

convert(char chinese)

);//perform the conversion from one encoding to the other.

byte asciibytes =encoding.convert(unicode, gb2312, unicodebytes);

//計算該漢字的gb-2312編碼

int n = (int)asciibytes[0] << 8

; n += (int)asciibytes[1

];

//根據漢字區域碼獲取拼音聲母

if (in(0xb0a1, 0xb0c4, n)) return'a

';if (in(0xb0c5, 0xb2c0, n)) return'b

';if (in(0xb2c1, 0xb4ed, n)) return'c

';if (in(0xb4ee, 0xb6e9, n)) return'd

';if (in(0xb6ea, 0xb7a1, n)) return'e

';if (in(0xb7a2, 0xb8c0, n)) return'f

';if (in(0xb8c1, 0xb9fd, n)) return'g

';if (in(0xb9fe, 0xbbf6, n)) return'h

';if (in(0xbbf7, 0xbfa5, n)) return'j

';if (in(0xbfa6, 0xc0ab, n)) return'k

';if (in(0xc0ac, 0xc2e7, n)) return'l

';if (in(0xc2e8, 0xc4c2, n)) return'm

';if (in(0xc4c3, 0xc5b5, n)) return'n

';if (in(0xc5b6, 0xc5bd, n)) return'o

';if (in(0xc5be, 0xc6d9, n)) return'p

';if (in(0xc6da, 0xc8ba, n)) return'q

';if (in(0xc8bb, 0xc8f5, n)) return'r

';if (in(0xc8f6, 0xcbf0, n)) return's

';if (in(0xcbfa, 0xcdd9, n)) return't

';if (in(0xcdda, 0xcef3, n)) return'w

';if (in(0xcef4, 0xd188, n)) return'x

';if (in(0xd1b9, 0xd4d0, n)) return'y

';if (in(0xd4d1, 0xd7f9, n)) return'z

';return'\0';}

}

注意:不支援多音字,每個漢字只有乙個拼音

3、第三種注音方法(支援多音字)

這個方法比較簡單好用,原理很簡單,定義所有的漢字拼音,遍歷所有的漢字,找出對應的拼音

新建乙個查詢類,定義靜態查詢方法,具體看**

筆記 關於漢字注音

最近想做乙個快速搜尋的功能,例如qq通訊錄通過數字鍵速查聯絡人 首先要把聯絡人姓名轉化為拼音,然後再進行匹配 1 利用微軟提供的拼音庫,計算出漢字的拼音的方法,此方法支援多音字符 解壓得到chspinyinconv.msi 拼音類庫 和 chspinyinconv.msi 簡繁體類 安裝 記住安裝路...

筆記 關於漢字注音

最近想做乙個快速搜尋的功能,例如qq通訊錄通過數字鍵速查聯絡人 首先要把聯絡人姓名轉化為拼音,然後再進行匹配 1 利用微軟提供的拼音庫,計算出漢字的拼音的方法,此方法支援多音字符 解壓得到chspinyinconv.msi 拼音類庫 和 chspinyinconv.msi 簡繁體類 安裝 記住安裝路...

漢字轉拼音

region 漢字轉拼音 漢字轉拼音類 用法 crazycoderpinyin.covent 漢字 長度 using system.text.regularexpressions build date 20030610 public class crazycoderpinyin 定義陣列 priva...