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

 近日需要做一个医院的项目,要求用拼音来检索药品名称,就需要一个将汉字转换成拼音首字母序列的功能,网上现有的许多类似的功能只能是做对常用字进行检索,但对一些冷辟字就不行了,今天看了一个用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。不过对于我所做的项目来讲,这是无关紧要的,因为不需要来区分多音字的,只要能检索出来就可以了。

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

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
你可以使用第三方库来实现汉字拼音的功能,比如 NuGet 上的 NPOI 或者 PinyinConverter。以下是使用 PinyinConverter 来实现汉字拼音字母的示例代码: ```csharp using System; using System.Globalization; using System.Text; using PinyinConverter; class Program { static void Main(string[] args) { string input = "汉字拼音"; string output = GetPinyin(input, true); Console.WriteLine(output); // "HZZPY" } static string GetPinyin(string input, bool capitalizeFirstLetter) { StringBuilder result = new StringBuilder(); foreach (char c in input) { if (ChineseChar.IsValidChar(c)) { ChineseChar chineseChar = new ChineseChar(c); string pinyin = chineseChar.Pinyins[0]; if (capitalizeFirstLetter) { pinyin = CultureInfo.CurrentCulture.TextInfo.ToTitleCase(pinyin); } result.Append(pinyin[0]); } else { result.Append(c); } } return result.ToString(); } } ``` 代码解释: 1. 引入 `PinyinConverter` 命名空间。 2. 在 `Main` 方法中,定义一个字符串 `input`,表示要转换拼音汉字字符串。 3. 调用 `GetPinyin` 方法,传入 `input` 字符串和一个布尔值 `true`,表示要将拼音字母。 4. `GetPinyin` 方法中,使用 `StringBuilder` 构造一个字符串 `result`,用于存储转换后的拼音。 5. 遍历 `input` 字符串中的每个字符,判断是否是中文字符。 6. 如果是中文字符,则使用 `ChineseChar` 对象将其转换拼音字符串,并获取第一个拼音字符串。 7. 如果需要将拼音字母,则使用 `ToTitleCase` 方法将其转换成首字母的形式。 8. 将拼音字符串的首字母添加到 `result` 中。 9. 如果不是中文字符,则将其直接添加到 `result` 中。 10. 最后将 `result` 转换成字符串并返回。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值