利用微软类库 Visual Studio International Pack 汉字转拼音首字母,完美解决多音字问题
来源:互联网 发布:网络公开课视频 编辑:程序博客网 时间:2024/04/29 01:59
首先,从微软官网下载安装包:http://www.microsoft.com/zh-cn/download/details.aspx?id=15251。下载后解压,安装CHSPinYinConv.msi,这个就是是汉字拼音组件。
安装完成后在VS里添加引用,分别引用:C:\Program Files()x86\Microsoft Visual Studio International Pack\Simplified Chinese Pin-Yin Conversion Library(拼音)下的相关DLL。
网上的一般示例是这样的:
/// <summary> /// 汉字转化为拼音首字母 /// </summary> /// <param name="str">汉字</param> /// <returns>首字母</returns> public static string GetFirstPinyin(string str) { string r = string.Empty; foreach (char obj in str) { try { ChineseChar chineseChar = new ChineseChar(obj); string t = chineseChar.Pinyins[0].ToString(); r += t.Substring(0, 1); } catch { r += obj.ToString(); } } return r; }
但是这个方法并没有解决多音字的问题,我将上述方法修改为如下:
/// <summary> /// 汉字转化为拼音首字母 /// </summary> /// <param name="str">汉字</param> /// <returns>首字母</returns> public List<string> GetFirstPinyin(string InputTxt) { List<string> listStrFirst = new List<string>(); List<string> listStrSecond = new List<string>(); List<string> listStr = new List<string>(); foreach (char obj in InputTxt) { try { ChineseChar chineseChar = new ChineseChar(obj); for (int i = 0; i < chineseChar.Pinyins.Count(); i++) { if (chineseChar.Pinyins[i] != null) { listStrFirst.Add(chineseChar.Pinyins[i].Substring(0, 1).ToLower().ToString()); } } } catch { listStrFirst.Add(obj.ToString()); } listStrFirst = listStrFirst.Distinct().ToList(); if (listStrFirst.Count > 0 && listStrSecond.Count > 0) { listStr.Clear(); for (int i = 0; i < listStrFirst.Count; i++) { for (int m = 0; m < listStrSecond.Count; m++) { listStr.Add(listStrSecond[m] + listStrFirst[i]); } } listStrSecond.Clear(); foreach (string str in listStr) { listStrSecond.Add(str); } listStrFirst.Clear(); } else { foreach (string strFirst in listStrFirst) { listStrSecond.Add(strFirst); } listStrFirst.Clear(); } } return listStr; }
这样会罗列出输入的汉字的首字母的所有组合,我们把罗列出来的List集合放到一个Panel中,让用户自己进行选择,这样就可以解决多音字的问题。
private void button1_Click(object sender, EventArgs e) { List<String> list = GetFirstPinyin(textBox1.Text); if (list.Count > 1) { this.panel1.Visible = true; for (int i = 0; i < list.Count(); i++) { if (list[i] != null) { RadioButton rb = new RadioButton(); rb.Text = list[i]; rb.AutoSize = true; rb.Location = new System.Drawing.Point(22, 15 + i * 20); rb.Name = "radioButton"+i; rb.Size = new System.Drawing.Size(95, 16); rb.TabStop = true; rb.UseVisualStyleBackColor = true; rb.Click += rb_Click; this.panel1.Controls.Add (rb); } } } else { this.textBox2.Text = list[0]; } } void rb_Click(object sender, EventArgs e) { RadioButton rb=(RadioButton )sender ; this.textBox2.Text = rb.Text; this.panel1.Visible = false; }
我上传了示例源代码,下载地址为:http://download.csdn.net/detail/esunshine1985/8957295
0 0
- 利用微软类库 Visual Studio International Pack 汉字转拼音首字母,完美解决多音字问题
- C# 使用微软的Visual Studio International Pack 类库提取汉字拼音首字母
- C# 使用微软的Visual Studio International Pack 类库提取汉字拼音首字母
- C# 使用微软的Visual Studio International Pack 类库提取汉字拼音首字母
- C# 使用微软的Visual Studio International Pack 类库提取汉字拼音首字母
- C# 使用微软的Visual Studio International Pack 类库提取汉字拼音首字母
- C# 使用微软的Visual Studio International Pack 类库提取汉字拼音首字母
- C# 使用微软的Visual Studio International Pack 类库提取汉字拼音首字母
- C# 使用微软的Visual Studio International Pack 类库提取汉字拼音首字母
- 扩展类库:使用微软的 Visual Studio International Pack 1.0 进行网站简体与繁体的互转和得到汉字、拼音、笔画等相关信息
- 中文转拼音的实现,利用Visual Studio International Pack库
- 利用微软的Visual Studio International Pack 1.0进行中文转换为拼音
- 使用Microsoft Visual Studio International Pack获得中文字符串的所有拼音组合(处理多音字)
- 使用微软的 Visual Studio International Pack 1.0 进行网站简体与繁体的互转和得到汉字、拼音、笔画等相关信息
- 使用微软的 Visual Studio International Pack 1.0 进行网站简体与繁体的互转和得到汉字、拼音、笔画等相关信息
- 使用微软的 Visual Studio International Pack 1.0 进行网站简体与繁体的互转和得到汉字、拼音、笔画等相关信息
- 【.Net码农】使用微软的 Visual Studio International Pack 1.0 进行网站简体与繁体的互转和得到汉字、拼音、笔画等相关信息
- Java 汉字转拼音(完美支持解决多音字)
- OC总结
- 父类不含无参构造方法子类构造方法必须显式调用
- xilinx usb jtag 驱动 安装
- Oracle 自定义函数语法与实例
- TalkingData的研发面试题目
- 利用微软类库 Visual Studio International Pack 汉字转拼音首字母,完美解决多音字问题
- Day8.03
- 关于ViewPager显示循环图片的例子
- hadoop-eclipse插件编译备注
- C++ 布尔类型bool
- Android中多线程编程(四)AsyncTask类的详细解释(附源码)
- 小知识点(十)——如何在局域网内连接mysql
- 将Linux的grub引导切换回BCD引导或Metro引导
- 移动统计分析 - 那些年一起踩过的坑