取汉子拼音首字母的C#和VB.Net方法

最近修改了项目中的一个bug,是因为取汉子拼音首字母的方法有问题导致一些字的首字母获取错误,在网上找了一些现成的方法进行测试,发现下面的方法虽然比较笨,但准确率还是挺高。

C#代码

 

  
  
  
  
  1. /// <summary> 
  2.        /// 获得一个字符串的汉语拼音码  
  3.        /// </summary> 
  4.        /// <param name="strText">字符串</param> 
  5.        /// <returns>汉语拼音码,该字符串只包含大写的英文字母</returns> 
  6.        public static string GetChineseSpell(string strText)  
  7.        {  
  8.            if (strText == null || strText.Length == 0)  
  9.                return strText;  
  10.            System.Text.StringBuilder myStr = new System.Text.StringBuilder();  
  11.            foreach (char vChar in strText)  
  12.            {  
  13.                // 若是字母则直接输出  
  14.                if ((vChar >= 'a' && vChar <= 'z') || (vChar >= 'A' && vChar <= 'Z'))  
  15.                    myStr.Append(char.ToUpper(vChar));  
  16.                else if ((int)vChar >= 19968 && (int)vChar <= 40869)  
  17.                {  
  18.                    // 若字符Unicode编码在编码范围则 查汉字列表进行转换输出  
  19.                    foreach (string strList in strChineseCharList)  
  20.                    {  
  21.                        if (strList.IndexOf(vChar) > 0)  
  22.                        {  
  23.                            myStr.Append(strList[0]);  
  24.                            break;  
  25.                        }  
  26.                    }  
  27.                }  
  28.            }  
  29.            return myStr.ToString();  
  30.        }// GetChineseSpell    
  31.  
  32.        private static string[] strChineseCharList =  
  33.        {  
  34.                "A阿啊锕嗄��哎哀唉埃挨�怙玩X��捱皑����B�舶}癌��l嗳矮蔼�t���@�c霭�\艾�窗�砹�v隘嗌�a嫒�郯�暧瑷�v���八B�岘a����}�L�P�o安��^桉氨庵谙�s�W鹌��Y�鞍�Q�K�c�V��彪���"   ,  
  35.                "A俺��埯铵�@揞�O�@犴岸按�I案胺�t��F暗����B黯肮�彀�n��盎�l凹坳���垒E�n敖���J嗷��邂�E獒��遨熬�H�T翱聱螯�K��O鳌鏖��q���b袄媪�O�\岙�U�C傲�S奥���R骜�W�S澳懊���鏊"   ,  
  36.                "B八��巴叭扒�[�X吧�B岜芭疤�^捌笆粑��j�M��^�����i�z��拔茇�甙j�_�菝�y跋�R魃把靶坝�y爸��罢鲅�E��F霸�五���掰白百佰柏�噢愀q�摆�[�o呗��败拜�h�“藁���b��漠B扳"   ,  
  37.                "B��班般颁斑搬�蜀N�癍�n阪坂��L板版��钣�{舨�k�Z�办半伴扮���E拌绊�t�O�[��k瓣邦�L��帮�拾痄哼���揽R�晚D绑�榜膀�g蚌傍棒谤�Y�蒡�M磅镑��r勹包�苕甙�胞�煲龅�}褒��_"   ,  
  38.                "B���雹宝�A饱保鸨��堡��~葆����褓�h�R��d�������d�舯ūП�趵�鲍�s�b暴�����薇��掼t�`陂卑杯��G悲�d碑鹎��l�毡便m贝狈�邶备�K�雌p背钡�p倍悖�N被���f�D�f��F惫"   ,  
  39.                "B焙�K辈�薯斩F蓓��婉卣R�c��^�v�L鞴鐾奔�y贲���`�G�娘煎Q本苯�M畚�褊��L笨�噍��缺辣灵a�朽跃X�甭�热E�e�泵迸�l甏�G蹦�a��缺曝P��S�s�妮┍�镓氨���a�舆铃��a�H彼�╋�"   ,  
  40.                "B俾笔�舭�P鄙���霰冶乇媳��f庇�����P畀�n哔毖���R荜陛毙狴���铋婢庳敝�a萆�]�[�]���弼�香���z�筚�v�C�P����殇����痹�b蓖��裨跸�s��疟�为�碧箅�a蔽��E��И�"   ,  
  41.               

VB.Net代码

 

  
  
  
  
  1. '/ <summary> 
  2.   '/ 获得一个字符串的汉语拼音码  
  3.   '/ </summary> 
  4.   '/ <param name="strText">字符串</param> 
  5.   '/ <returns>汉语拼音码,该字符串只包含大写的英文字母</returns> 
  6.   Public Shared Function GetChineseSpell(ByVal strText As String) As String  
  7.       If strText = Nothing Or strText.Length = 0 Then  
  8.           Return strText  
  9.       End If  
  10.       Dim myStr As System.Text.StringBuilder = New System.Text.StringBuilder()  
  11.       Dim vChar As Char  
  12.       For Each vChar In strText  
  13.           ' 若是字母则直接输出  
  14.           If (vChar >= "a"c And vChar <= "z"c) Or (vChar >= "A"c And vChar <= "Z"c) Then  
  15.               myStr.Append(vChar)  
  16.           ElseIf Microsoft.VisualBasic.AscW(vChar) >= 19968 And Microsoft.VisualBasic.AscW(vChar) <= 40869 Then  
  17.               ' 若字符Unicode编码在编码范围则 查汉字列表进行转换输出  
  18.               Dim strList As String  
  19.               For Each strList In strChineseCharList  
  20.                   If strList.IndexOf(vChar) > 0 Then  
  21.                       myStr.Append(strList(0))  
  22.                       Exit For  

需要注意的是C#和VB.Net在处理Unicode编码时有些区别,VB.Net使用

来进行转换。

你可能感兴趣的:(区别,拼音,字母)