作為中國人,漢語拼音是我們的重要工具,在業務實現的時候,加入通用的漢語拼音首字母檢索功能非常重要,目前好多人通過外部的dllg來實現,有的人也用七八千記錄的漢字對照表來解決。
有些dll作的太粗造,有的呢。在unicode下失效,,庫表的方法很苯,執行效率太差,這些都不是長遠之計。
其實漢字編碼並是特別複雜。用區位計算加對照表的方法基本完全可以解決,再加上附助的自定義對照表,可以說完全可以作無差錯的功能函式。
提取辦法!
其實,共有七千多個漢字,
1.採用區位計算,可以解決三四千個,
2.採用區位順序對比(需作乙個長串對比表),可以解決所有有規律的,
3.採用臨時對比可以解決剩下的,特別字元。
所以,不用dll.(受制於人),不用採用庫表檢索的方法(效率低),寫一百來行**就可以解決!
首先,取asc,區位前128個,直接取,那時asc基本碼,
其次,對於asc高低位計算而來的前1600 到5590的,是嚴格規律漢字,通過定位的方法,直接 取到
再次,對於大於5590的,在拼音首字對應不好,有些亂,但是,這些字是放在乙個塊中的,也就是說是連續的漢字塊,可以作乙個同等長度的對照表,直接取位置,得到首字母。
有些長用的,如全形的一些東東,位置也沒有規律,但數量不多,可以採用附加對照表的方法,取出。
所謂對照表,只是乙個字串,不是什麼複雜的關係表。
總結起來。就是:區位定位(區位整塊漢字同一聲母)+ 連續定位(連續的漢字塊,但說不定是那個聲母) + 自定義定位 (不連續也沒有規律)
使用辦法!
漢語拼音首字母模糊化查詢
在sql中建立使用者自定義拼音函式 create function f getpy str nvarchar 400 returns nvarchar 4000 asbegin declare strlen int,re nvarchar 4000 declare t table chr nchar...
SQL按漢語拼音首字母排序
以常用到的省的資料表 province 為例,其中name欄位為省的名稱,sql語句如下 1 select isnull b.py,upper left a.name,1 as py 2,a.name 3from province 4a 5left outer join 6 select a as ...
漢字姓名怎麼取到姓名的漢語拼音首字母
public class firstletteruti 二十六個字母區間對應二十七個端點 gb2312碼漢字區間十進位制表示 private static int table new int 27 對應首字母區間表 private static char initialtable 初始化 stati...