用C#写的将汉字转换为拼音首字母

来源:互联网 发布:sql语音中删除表命令 编辑:程序博客网 时间:2024/06/11 20:59

 近日需要做一个医院的项目,要求用拼音来检索药品名称,就需要一个将汉字转换成拼音首字母序列的功能,网上现有的许多类似的功能只能是做对常用字进行检索,但对一些冷辟字就不行了,今天看了一个用SQL Server写的一个转换函数,我把它转换成C#的,下面是汉字转换成首字母列的类的代码:

public class RealHanzi2Py
    
{
        
public RealHanzi2Py()
        
{
        }

        
public static string GetPy(string HanZi)
        
{
            
string PyString = "吖八嚓咑妸发旮铪讥讥咔垃呣拿讴趴七呥仨他哇哇哇夕丫匝咗";
            
string CurChar,vReturn="";
            
for (int nFor = 0; nFor < HanZi.Length;nFor++ )
            
{
                CurChar 
= HanZi.Substring(nFor, 1);
                
for (int nPyFor = 0; nPyFor < PyString.Length;nPyFor++ )
                
{
                    
int Ret = CurChar.CompareTo(PyString.Substring(nPyFor, 1));
                    
if (Ret < 0)
                    
{
                        
string Ch = "";
                        
if (nPyFor != -1)
                            Ch 
= Convert.ToChar(64 + nPyFor).ToString();
                        
else
                            Ch 
= CurChar;
                        vReturn 
= vReturn.Trim() + Ch;
                        
break;
                    }

                }

            }

            
return vReturn;
        }

    }

使用这个类非常简单,如下:

 

public partial class Form1 : Form
    
{
        
public Form1()
        
{
            InitializeComponent();
        }


        
private void BtnPingYing_Click(object sender, EventArgs e)
        
{
            
//可以转换一些不常用的字
            TxtPingYing.Text = RealHanzi2Py.GetPy(TxtHanZi.Text);
        }

        
private void Form1_Load(object sender, EventArgs e)
        
{
            TxtHanZi.Text 
= "吖吖八嚓咑妸发旮铪讥讥咔垃呣拿讴趴七呥仨他哇哇哇夕丫匝咗啊我是中国人旸喆垚铔疟";
        }

   }
 

便可,但有一个缺点,就是对多音字无法辨识,如“银行”,转换的结果是:YX。不过对于我所做的项目来讲,这是无关紧要的,因为不需要来区分多音字的,只要能检索出来就可以了。

可惜源代码无法上传,以后再传吧。