亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 學院 > 開發設計 > 正文

漢字助記碼,你會了嗎?

2019-11-14 16:40:33
字體:
來源:轉載
供稿:網友

     漢字助記碼,你會了嗎?

       在編程中,我們經常會遇到漢字助記碼的問題,筆者曾經為此多次發愁,現總結前輩的好東西,記錄于此,希望能幫助到您,方法有多種,在此比較幾種方案,簡單剖析一下。

      首先說明,什么是漢字助記碼?所謂的漢字助記碼就是一個漢字的拼音的首字母,如:張的漢字助記碼為Z,湖北中醫藥大學的助記碼為HBZYYDX。下面通過程序用三種方法實現:

     方法一:表獲取方法; 

     表內容大致說明:      

      實現核心代碼——SQL標量值函數:

 1 ------------------------------------------------ 2 --作者:zhangbc 3 --時間:2014-05-05 4 --功能:獲取漢字拼音首字母 5 ------------------------------------------------ 6 ALTER function [dbo].[fun_getMnemonic](@str nvarchar(4000))  7 returns nvarchar(4000)  8 as  9 begin10 declare @zjm varchar(100),@tmp_char varchar(2),@tmp_zjm varchar(2),  @i int,@length int11      set @zjm =''12      set @length = len(@str)13      set @i = 114      while @i<=@length 15      begin16          set @tmp_char = substring(@str,@i,1)17          select @tmp_zjm =zjm from hz_zjm where hanzi=@tmp_char18          if @@rowcount=1 19          set @zjm = @zjm +Rtrim(@tmp_zjm)20          set @i = @i + 1 21      end   22     return (@zjm)23 end 
View Code

     方法二:存儲過程獲取;

     實現核心代碼——SQL存儲過程:

 1 -- ============================================= 2 -- Author:    zhangbc 3 -- Create date: 2014-05-03 4 -- Description:    獲取漢字拼音首字母 5 -- ============================================= 6 ALTER PROCEDURE [dbo].[getMnemonic]  7       @str varchar(4000) 8 AS 9 --     return char(4000)10 BEGIN11     declare @Word nchar(1),@PY nvarchar(4000) 12     set @PY='' 13     while len(@str)>0 14     begin 15     set @word=left(@str,1) 16     --如果非漢字字符,返回原字符 17     set @PY=@PY+(case when unicode(@word) between 19968 and 19968+20901 18     then (select top 1 PY from ( 19     select 'A' as PY,N'' as word 20     union all select 'B',N'簿' 21     union all select 'C',N'' 22     union all select 'D',N'' 23     union all select 'E',N'' 24     union all select 'F',N'' 25     union all select 'G',N'' 26     union all select 'H',N'' 27     union all select 'J',N'' 28     union all select 'K',N'' 29     union all select 'L',N'' 30     union all select 'M',N'' 31     union all select 'N',N'' 32     union all select 'O',N'' 33     union all select 'P',N'' 34     union all select 'Q',N'' 35     union all select 'R',N'' 36     union all select 'S',N'' 37     union all select 'T',N'' 38     union all select 'W',N'' 39     union all select 'X',N'' 40     union all select 'Y',N'' 41     union all select 'Z',N'' 42     ) T 43     where word>=@word collate Chinese_PRC_CS_AS_KS_WS 44     order by PY ASC) else @word end) 45     set @str=right(@str,len(@str)-1) 46     end 47     select @PY 48 END
View Code

     方法三:標量值獲?。ㄋ惴ê头椒ǘ粯樱瑢崿F方式不同):

     代碼如下:

 1 ------------------------------------------------ 2 --作者:zhangbc 3 --時間:2014-03-19 4 --功能:獲取漢字拼音首字母 5 ------------------------------------------------ 6 ALTER function [dbo].[fun_getZjm](@str nvarchar(4000))  7 returns nvarchar(4000)  8 as  9 begin 10 declare @word nchar(1),@PY nvarchar(4000) 11 set @PY='' 12 while len(@str)>0 13 begin 14 set @word=left(@str,1) 15 --如果非漢字字符,返回原字符 16 set @PY=@PY+(case when unicode(@word) between 19968 and 19968+20901 17 then (select top 1 PY from ( 18 select 'A' as PY,N'' as word 19 union all select 'B',N'簿' 20 union all select 'C',N'' 21 union all select 'D',N'' 22 union all select 'E',N'' 23 union all select 'F',N'' 24 union all select 'G',N'' 25 union all select 'H',N'' 26 union all select 'J',N'' 27 union all select 'K',N'' 28 union all select 'L',N'' 29 union all select 'M',N'' 30 union all select 'N',N'' 31 union all select 'O',N'' 32 union all select 'P',N'' 33 union all select 'Q',N'' 34 union all select 'R',N'' 35 union all select 'S',N'' 36 union all select 'T',N'' 37 union all select 'W',N'' 38 union all select 'X',N'' 39 union all select 'Y',N'' 40 union all select 'Z',N'' 41 ) T 42 where word>=@word collate Chinese_PRC_CS_AS_KS_WS 43 order by PY ASC) else @word end) 44 set @str=right(@str,len(@str)-1) 45 end 46 return @PY 47 end 
View Code

     方法四:字符編碼法;

     核心代碼如下:

 1  public class getMnemonic 2     { 3         public getMnemonic() 4         { 5  6         } 7         /// <summary> 8         /// 字符編碼的獲取 9         /// </summary>10         /// <param name="cnChar">字符</param>11         /// <returns>字符編碼</returns>12         private static string getSpell(string cnChar)13         {14             byte[] arrCN = Encoding.Default.GetBytes(cnChar);15             if (arrCN.Length > 1)16             {17                 int area = (short)arrCN[0];18                 int pos = (short)arrCN[1];19                 int code = (area << 8) + pos;20                 int[] areacode = { 45217, 45253, 45761, 46318, 46826, 47010, 47297, 47614, 21                                      48119, 48119, 49062, 49324, 49896,50371, 50614, 50622,22                                      50906, 51387, 51446, 52218, 52698, 52698, 52698, 52980, 53689, 54481 };23                 for (int i = 0; i < 26; i++)24                 {25                     int max = 55290;26                     if (i != 25)27                         max = areacode[i + 1];28                     if (areacode[i] <= code && code < max)29                         return Encoding.Default.GetString(new byte[] { (byte)(65 + i)});30                 }31                 return "*";32             }33             else return cnChar;34         }35         /// <summary>36         /// 字符編碼獲取助記碼37         /// </summary>38         /// <param name="str">漢字</param>39         /// <returns>助記碼</returns>40         public string getChsSpell(string str)41         {42             string myStr = "";43             for (int i = 0; i < str.Length; i++)44             {45                 myStr += getSpell(str.Substring(i, 1));46             }47             return myStr;48         }49     }
View Code

    測試結果如下:

     圖1-1

  圖1-2

圖1-3

圖1-4

     小結:

           通過測試結果來看,字符編碼(方法四)還是有點不完美,其實通過表獲取的方法(方法一)也存在不足,漢字存儲太少。

          這次測試的一個意外收獲就是char()與varchar()的區別,請看:

         

            還望知情者給予合理的解釋,不甚感激!如果能給你帶來幫助,請贊一個,你的用心閱讀是我寫博的不竭動力!

            贈送源碼一份,供您研究:http://files.VEVb.com/zhangbc/MnemonicOfWords.rar

            PS:如有不足之處,歡迎指點與切磋,您的光臨是我的榮幸,聯系方式QQ649414754 


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
国产精品视频xxxx| 日韩a**站在线观看| 韩日精品中文字幕| 欧美精品一本久久男人的天堂| 国产精品69久久| 8050国产精品久久久久久| 中文字幕日韩欧美在线| 国产成人拍精品视频午夜网站| 97精品视频在线播放| 久久欧美在线电影| 欧美一级片免费在线| 国产亚洲xxx| 一区二区三区高清国产| 成人在线一区二区| 亚洲成人av片| 精品国产欧美成人夜夜嗨| 日韩欧美一区二区三区久久| 成人黄色网免费| 日本久久中文字幕| 国产精品r级在线| 色系列之999| 亚洲欧美精品suv| 国产精品美女999| 色七七影院综合| 日韩av色在线| 秋霞成人午夜鲁丝一区二区三区| 91sa在线看| 久久久久久久999| 中文字幕av一区中文字幕天堂| 亚洲美女又黄又爽在线观看| 国产精品99蜜臀久久不卡二区| 国产精品99久久99久久久二8| 在线观看欧美www| 成人网中文字幕| 午夜精品久久久久久久99热| 欧美高清无遮挡| 亚洲精品久久久久久久久久久久| 91在线免费网站| 久久成人综合视频| 精品国内亚洲在观看18黄| 欧美有码在线视频| 欧美激情免费看| 伊人伊成久久人综合网站| 成人激情黄色网| 国产成人高清激情视频在线观看| 国产成人精品视频在线| 欧美一级成年大片在线观看| 欧美日韩亚洲精品内裤| 日韩精品电影网| 久久不射电影网| 亚洲精品一区久久久久久| 亚洲一区二区三区毛片| 成人黄色在线播放| 国产91精品久| 亚洲国产精久久久久久| 国产精品7m视频| www.欧美精品| 91视频免费在线| 国内精品一区二区三区四区| 国产精品一区二区电影| 亚洲人成网7777777国产| 欧美性在线观看| 久久人人97超碰精品888| 亚洲福利影片在线| 亚洲欧洲成视频免费观看| 日韩激情av在线免费观看| 中文字幕日韩高清| 国产乱人伦真实精品视频| 国产成人高清激情视频在线观看| 国产日韩欧美在线看| 91影院在线免费观看视频| 久久精品在线视频| 综合网中文字幕| 91精品久久久久久久久久久| 91久热免费在线视频| 国产精品日韩在线观看| 欧美日韩国产在线播放| 亚洲精品99久久久久中文字幕| 国产欧美日韩精品丝袜高跟鞋| 亚洲精品一区二三区不卡| 亚洲男人天堂古典| 亚洲人成啪啪网站| 国产精品久久久久久超碰| 97国产一区二区精品久久呦| 中文字幕日韩综合av| 不用播放器成人网| 国语自产精品视频在线看一大j8| 97涩涩爰在线观看亚洲| 亚洲福利视频专区| 国产精品高潮呻吟久久av无限| 亚洲乱码一区二区| 亚洲尤物视频网| 久久精品成人一区二区三区| 超薄丝袜一区二区| 91chinesevideo永久地址| 一道本无吗dⅴd在线播放一区| 日本国产一区二区三区| 久久综合国产精品台湾中文娱乐网| 亲子乱一区二区三区电影| 欧美性xxxx极品hd欧美风情| 久久精视频免费在线久久完整在线看| 一区二区中文字幕| 色悠悠国产精品| 国产日韩欧美视频在线| 欧美性受xxx| 欧美高清电影在线看| 国产一区二区欧美日韩| 国产精品va在线| 综合136福利视频在线| 亚洲三级 欧美三级| 中文字幕亚洲综合久久筱田步美| 欧洲成人午夜免费大片| 精品国产一区二区三区久久狼黑人| 久久久久久久久久久亚洲| 色琪琪综合男人的天堂aⅴ视频| 色中色综合影院手机版在线观看| 久久久伊人欧美| 亚洲精品91美女久久久久久久| 45www国产精品网站| 久久av资源网站| 亚洲精品视频播放| 国产精品91一区| 欧美成人免费va影院高清| 91系列在线播放| 日韩精品中文字幕在线观看| 欧美黑人性猛交| 26uuu国产精品视频| 国产午夜精品久久久| 成人黄色午夜影院| 国产91色在线播放| 日韩av电影在线免费播放| 日本久久久久久久| 国产精品444| 亚洲精品国产精品自产a区红杏吧| 久久久国产精彩视频美女艺术照福利| 欧美极品欧美精品欧美视频| 亚洲视频一区二区| 国产精品视频免费在线观看| 91精品久久久久久综合乱菊| 国外成人在线视频| 欧美一二三视频| 日韩欧美高清在线视频| 亚洲黄色成人网| 97人人爽人人喊人人模波多| 国产综合色香蕉精品| 日韩电影视频免费| 精品福利在线看| 久久久久久久久久久亚洲| 另类专区欧美制服同性| 午夜精品久久久久久久久久久久久| 国产精品高潮视频| 亚洲国产欧美一区二区三区久久| 91精品久久久久久久久久| 国产精品视频一| 成人a免费视频| 久久精品视频导航| 国产一区二区免费| 久久久久久久国产| 久久久电影免费观看完整版| 欧美日韩中国免费专区在线看| 欧美另类第一页| 51ⅴ精品国产91久久久久久| 国产欧美久久久久久| 久久精品国产清自在天天线|