這個問題還挺不好回答的。因?yàn)椴恢李}主的意圖,也不清楚是否要考慮多音字的問題??赡苁俏蚁攵嗔?,在這里我就給一個利用GB2312編碼表查詢拼音首字母的方案。
GB2312編碼
GB2312編碼共收錄漢字6763個,其中一級漢字3755個,二級漢字3008個,另外還有682個全角字符。其中,一級漢字是按照拼音字母的順序排列的??芍苯佑镁幋a查詢拼音首字母。不過,二級漢字是按照偏旁部首排列的,沒法查,這部分漢字只能自己做一份對照表了。
一級漢字查詢
根據(jù)GB2312編碼規(guī)則,可按下表查詢。
- 1601-1636a
- 1637-1832b
- 1833-2077c
- 2078-2274d
- ……(略)
百度一下可以找到完整的編碼表。
二級漢字
這三千多個字只能自己做表了。我有一個暗黑的方法,就是找到拼音輸入法的數(shù)據(jù)表,整理一下拿來用。這個方法有可能涉及到版權(quán)問題,我就不細(xì)說了。
Javascript的限制
Javascript是在瀏覽器上執(zhí)行的,攜帶一份巨大的對照表可能嚴(yán)重影響網(wǎng)頁的下載速度。建議只對應(yīng)一級漢字。另外,JS沒有編碼轉(zhuǎn)換函數(shù),應(yīng)盡量避免編碼轉(zhuǎn)換,實(shí)在不能避免的話,只能自己寫轉(zhuǎn)換函數(shù)了。網(wǎng)上雖有不少例子,都不是很可靠。要有個別編碼存在轉(zhuǎn)換錯誤的覺悟。
算法的考慮
如果攜帶二級漢字對照表,則需要考慮提高查詢速度。二叉樹算法是個不錯的選擇。