获取输入汉字的中文读音
来源:互联网 发布:关于利用网络云盘制作 编辑:程序博客网 时间:2024/06/08 13:50
在论坛上看到一个题目:要求输入一个汉字,输出这个汉字的所有读音(不含声调并去除重复)。
这道题的关键在于要使用一个API,由于系统本身并没有默认带这个API的dll文件,所以就去微软下载了一个Microsoft Visual Studio International Pack 。这个包里面包函了东亚部分国家的语言的发音。
然后添加这个dll文件,调用里面的属性和方法就可以得到这个字的读音的集合。但是我们要对输出的读音进行一个处理——不含声调并去除重复。如果输入一个“调”字,不加任何处理的话,就会输出:DIAO4、DIAO5、TIAO2、TIAO4、 、 、 、 ,前面的四个表示读音,其中数字应该是表示声调,后面的四个是空字符。所以我们首先要把空字符去掉,然后再把每个读音后面的数字去掉,最后再去年相同的读音就行了。去空字符可以使用linq查询语句,去掉数字就可以使用正则表达式了,最后去掉相同的部分就可以使用集合的一个Distinct()方法,这样会使代码精简许多。其中,Distinct()方法返回一个IEnumerableCollection集合,输出这个集合里面的元素就OK了。
具体代码如下:
using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Runtime.InteropServices; using Microsoft.International.Converters.PinYinConverter; //引入ChnCharInfo的命名空间using System.Text.RegularExpressions; //引入正则表达式的命名空间namespace 第三题{ class Program { //输入一个汉字输出这个汉字的所有读音(不含声调并去除重复) static void Main(string[] args) { Console.WriteLine("请输入一个汉字:"); //char word = Convert.ToChar(Console.ReadLine()); string hanzi = Console.ReadLine(); //以字符串的形式输入一个汉字 char word; //定义一个变量,接收单个字符 if (char.TryParse(hanzi, out word)) //尝试将字符串汉字转换为字符 { if (ChineseChar.IsValidChar(word)) //调用API函数,检查输入的字符是否为汉字字符 { ChineseChar chnc = new ChineseChar(word); //将汉字字符传入,创建一个ChineseChar对象 //获取该对象的拼音集合,该集合是一个泛型只读集合 System.Collections.ObjectModel.ReadOnlyCollection<string> pinyins = chnc.Pinyins; //使用linq去掉集合中的null IEnumerable<string> strs = from pinyin in pinyins where pinyin != null select pinyin; //声明一个集合,用于存储处理好的拼音 List<string> list = new List<string>(); foreach (var items in strs) { string str = Regex.Replace(items.ToLower(), "[0-9]", ""); //使用正则表达式将集合中每个字符串的数字替换为空字符 list.Add(str); //把处理过的字符串添加进list中 //Console.WriteLine(item); } //提取list集合中的非重复元素 IEnumerable<string> duyin = list.Distinct<string>(); foreach (var item in duyin) //输出拼音 { Console.WriteLine(item); } } else { Console.WriteLine("您输入的不是有效汉字字符!"); } } else { Console.WriteLine("您输入的不是有效汉字字符!"); } Console.ReadKey(); } }}
- 获取输入汉字的中文读音
- asp输入汉字获取汉字的首字母
- 获取输入汉字的首字母
- 获取中文汉字的首字母
- 希腊字母的读音、手写体与输入方法
- 日文汉字读音规律
- JAVA获取中文汉字的拼音首字母
- 记忆日语的奥秘—日语汉字读音变化
- textfield输入中文,未确定具体字时,如何获取输入框中的汉字拼音
- 判断文本框只能输入中文汉字的代码
- 一种导致UITextView无法输入中文打出汉字的原因
- C#输入汉字获取拼音
- 获取所输入汉字拼音的首字母1
- 获取中文汉字首拼音字母
- java获取所有中文汉字
- JAVA中如何获取中文汉字的首字母
- java获取中文汉字的所有拼音代码分享
- Servlet获取中文汉字 产生中文乱码
- unity3d——iGUI实现图片动画
- C语言MD5加密字符串
- sql学习1
- YUV
- XML怎么写入数据
- 获取输入汉字的中文读音
- 竞品分析
- zoj 2104
- 提升本程序进程优先级和权限(VC++源代码)
- Rootkit之SSDT hook(通过CR0)
- Linux 下串口编程入门
- Ext.apply 与 Ext.applyif的区分
- 自定义字段新建数据表——方法2
- 多个activity 退出总结