首先,去微软官网下载Microsoft Visual Studio International Pack语言包,下载地址如下:
https://www.microsoft.com/zh-cn/download/confirmation.aspx?id=15251
下载后,你会看到vsintlpack1.zip的压缩包,解压该压缩包,然后点击里面的CHSPinYinConv.msi进行安装,记住安装的路径,因为待会我们需要使用到里面的ChnCharInfo.dll库
如我的安装路径是“E:\Program Files (x86)\Microsoft Visual Studio International Pack\Simplified Chinese Pin-Yin Conversion Library\ChnCharInfo.dll”
如果你懒得下载和安装,其实我也是懒得操作上面的步骤,就是拿到一个dll库而已,麻烦。
这里直接提供ChnCharInfo.dll库文件下载地址:
https://pan.baidu.com/s/1X2NgKorHTLwujS6FkHqAWg
新建winform项目,然后添加引用ChnCharInfo.dll,添加引用的教程可以参考:
https://blog.csdn.net/xiangxianghehe/article/details/75050885
winform窗格界面如下:
完整代码如下:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using Microsoft.International.Converters.PinYinConverter; //需要自己添加的命名空间
namespace 文字转拼音
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void Form1_Load(object sender, EventArgs e)
{
}
/// <summary>
/// 汉字转拼音
/// </summary>
/// <param name="str">要转换的文字</param>
/// <returns>返回转换的拼音结果(小写)</returns>
public string GetPinYin(string str) {
StringBuilder strResult = new StringBuilder();
foreach(var item in str){
try
{
ChineseChar chineseChar = new ChineseChar(item);
string t = chineseChar.Pinyins[0].ToString();
//由于返回的结果t是拼音加序号的字符串,故要去掉后面的序号
strResult.Append(t.Substring(0,t.Length-1));
}
catch (Exception)
{
strResult.Append(item.ToString());
}
}
//因为转换得到的结果是全部大写,故在这里全部转换成小写
return strResult.ToString().ToLower();
}
/// <summary>
/// 获取拼音的首字母
/// </summary>
/// <param name="str"></param>
/// <returns></returns>
public string GetFirstPinYin(string str) {
StringBuilder strResult = new StringBuilder();
foreach (var item in str)
{
try
{
ChineseChar chineseChar = new ChineseChar(item);
string t = chineseChar.Pinyins[0].ToString();
strResult.Append(t.Substring(0, 1));
}
catch (Exception)
{
strResult.Append(item.ToString());
}
}
return strResult.ToString().ToLower();
}
private void btnChange_Click(object sender, EventArgs e)
{
//取得输入汉字输入框TextBox的文本
string chineseInputStr=this.chineseInput.Text;
//取得拼音的结果
string resultStr = GetPinYin(chineseInputStr);
//把取得拼音的结果赋值给拼音输出文本框TextBox中
this.pinyinOut.Text = resultStr;
}
}
}
运行结果如下:
源码下载: