取的漢語拼音首字母解決思路

2021-05-08 03:47:12 字數 772 閱讀 3855

作為中國人,漢語拼音是我們的重要工具,在業務實現的時候,加入通用的漢語拼音首字母檢索功能非常重要,目前好多人通過外部的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...