取汉子拼音首字母的C#和VB.Net方法
2012-03-04 18:41
267 查看
最近修改了项目中的一个bug,是因为取汉子拼音首字母的方法有问题导致一些字的首字母获取错误,在网上找了一些现成的方法进行测试,发现下面的方法虽然比较笨,但准确率还是挺高。
需要注意的是C#和VB.Net在处理Unicode编码时有些区别,VB.Net使用
来进行转换。
C#代码
/// <summary> /// 获得一个字符串的汉语拼音码 /// </summary> /// <param name="strText">字符串</param> /// <returns>汉语拼音码,该字符串只包含大写的英文字母</returns> public static string GetChineseSpell(string strText) { if (strText == null || strText.Length == 0) return strText; System.Text.StringBuilder myStr = new System.Text.StringBuilder(); foreach (char vChar in strText) { // 若是字母则直接输出 if ((vChar >= 'a' && vChar <= 'z') || (vChar >= 'A' && vChar <= 'Z')) myStr.Append(char.ToUpper(vChar)); else if ((int)vChar >= 19968 && (int)vChar <= 40869) { // 若字符Unicode编码在编码范围则 查汉字列表进行转换输出 foreach (string strList in strChineseCharList) { if (strList.IndexOf(vChar) > 0) { myStr.Append(strList[0]); break; } } } } return myStr.ToString(); }// GetChineseSpell private static string[] strChineseCharList = { "A阿啊锕嗄厑哎哀唉埃挨溾锿鎄啀捱皑凒溰嘊敳皚癌毐昹嗳矮蔼躷噯藹譪霭靄艾伌爱砹硋隘嗌塧嫒愛碍暧瑷僾壒嬡懓薆曖璦鴱皧瞹馤鑀鱫安侒峖桉氨庵谙萻腤鹌蓭誝鞌鞍盦馣鮟盫韽啽雸垵" , "A俺唵埯铵隌揞罯銨犴岸按荌案胺豻堓婩暗貋儑錌黯肮岇昂昻枊盎醠凹坳垇柪軪爊敖厫隞嗷嗸嶅廒滶獒獓遨熬璈蔜翱聱螯翶謷翺鳌鏖鰲鷔鼇芺袄媪镺襖岙扷岰傲奡奥嫯慠骜奧嶴澳懊擙謸鏊" , "B八仈巴叭扒朳玐吧夿岜芭疤哵捌笆粑紦羓蚆釟豝鲃魞叐犮抜坺妭拔茇炦癹胈釛菝詙跋軷魃把靶坝弝爸垻罢鲅鮁覇矲霸壩灞欛挀掰白百佰柏栢捭竡粨摆擺襬呗拝败拜唄敗稗粺鞁薭贁兡瓸扳" , "B攽班般颁斑搬斒瘢螁癍辬阪坂岅昄板版瓪钣粄舨鈑蝂魬办半伴扮姅怑拌绊秚絆鉡靽辦瓣邦峀垹帮捠梆浜邫幇幚縍幫鞤绑綁榜膀玤蚌傍棒谤塝稖蒡蜯磅镑艕謗勹包佨孢苞胞笣煲龅蕔褒闁齙" , "B窇嫑雹宝怉饱保鸨珤堡堢媬葆寚飹飽褓駂鳵緥鴇賲藵寳寶靌勽报抱豹趵菢鲍靤骲暴髱虣儤曓爆忁鑤萡陂卑杯盃桮悲揹碑鹎藣鵯喺北鉳贝狈貝邶备昁牬苝背钡俻倍悖狽被偝偹梖珼鄁備僃惫" , "B焙軰辈愂碚禙蓓蛽犕褙誖骳輩鋇憊糒鞴鐾奔泍贲倴渀逩犇锛錛本苯奙畚楍坌捹桳笨撪輽伻崩绷閍嵭嘣綳繃甭埲菶琫鞛泵迸塴甏镚蹦鏰屄毴逼豍鲾鵖鰏柲荸鼻嬶匕比夶朼佊吡妣沘疕彼柀秕" , "B俾笔粊舭筆鄙聛貏匂币必毕闭佖坒庇诐邲妼怭畀畁哔毖珌疪荜陛毙狴畢袐铋婢庳敝梐萆萞閇閉堛弻弼愊愎湢皕禆筚詖貱赑嗶彃楅滗滭煏痹腷蓖蓽蜌裨跸閟飶幣弊熚獙碧箅綼蔽鄪馝幤潷獘" ,
VB.Net代码
'/ <summary> '/ 获得一个字符串的汉语拼音码 '/ </summary> '/ <param name="strText">字符串</param> '/ <returns>汉语拼音码,该字符串只包含大写的英文字母</returns> Public Shared Function GetChineseSpell(ByVal strText As String) As String If strText = Nothing Or strText.Length = 0 Then Return strText End If Dim myStr As System.Text.StringBuilder = New System.Text.StringBuilder() Dim vChar As Char For Each vChar In strText ' 若是字母则直接输出 If (vChar >= "a"c And vChar <= "z"c) Or (vChar >= "A"c And vChar <= "Z"c) Then myStr.Append(vChar) ElseIf Microsoft.VisualBasic.AscW(vChar) >= 19968 And Microsoft.VisualBasic.AscW(vChar) <= 40869 Then ' 若字符Unicode编码在编码范围则 查汉字列表进行转换输出 Dim strList As String For Each strList In strChineseCharList If strList.IndexOf(vChar) > 0 Then myStr.Append(strList(0)) Exit For
需要注意的是C#和VB.Net在处理Unicode编码时有些区别,VB.Net使用
来进行转换。
相关文章推荐
- 取汉子拼音首字母的C#和VB.Net方法
- 取汉子拼音首字母的C#和VB.Net方法
- 取汉子拼音首字母的VB.Net方法
- 取汉子拼音首字母的C#方法
- C#、VB.NET使用HttpWebRequest访问https地址(SSL)的实现方法
- 实现用VB.Net/(C#)开发K/3 BOS 插件的真正可行方法
- 通过string.Split()方法,谈谈VB.NET编译器和C#编译器的一点差别!
- 安装完vs2005后没有C#,VB.net,网站等模版的解决方法
- C#与VB.NET服务器端控件的基本表示方法(学习之四)
- VB/VB.NET/C#导出到Excel的方法
- 为什么VB.net的Shared(共享)方法在C#中叫Static(静态)?
- VB.NET,C#.NET调用Web Service,利用visual studio 的实现方法
- c#.net与vb.net中读写Cookie的方法!
- [C#][VB.NET]擴充方法 (Extension Method)
- SQL server和C#,VB.net中Round方法的差异
- VB/VB.NET/C#导出到Excel的方法
- VB.NET,C#.NET调用Web Service,利用visual studio 的实现方法
- asp.net 根据汉字的拼音首字母搜索数据库(附 LINQ 调用方法)
- 为什么VB.net的Shared(共享)方法在C#中叫Static(静态)?(http://zhenyulu.cnblogs.com/articles/385047.html)
- vb.net C# AtlAxGetControl 函数使用方法