首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在C#中将拼音字符串转换为中文

如何在C#中将拼音字符串转换为中文
EN

Stack Overflow用户
提问于 2012-03-02 23:00:51
回答 2查看 3.6K关注 0票数 7

我在我的WPF应用程序中有一个触摸屏键盘,我想让用户用中文书写。

我看到Windows中有一个输入法,可以用拼音写中文。它工作得很好,但我想为我的WPF应用程序自定义它。(尤其是候选人列表)。我没有找到任何与此相关的文档。

这个想法将是用户用虚拟键盘用拼音书写,文本框旁边将有一个带有中文表意文字的选择列表。

你有什么建议来实现它吗?也许有一个库(不是来自微软的)可以做到这一点,在这种情况下,我不会使用微软的输入法?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-03-12 16:09:49

http://www.microsoft.com/downloads/zh-cn/details.aspx?FamilyID=7D1DF9CE-4AEE-467F-996E-BEC826C5DAA2

http://www.microsoft.com/download/en/details.aspx?displaylang=en&id=15251

微软实际上有很好的组件/库,但它们隐藏在Visual Studio International Feature Pack中。

请注意,您需要1.0SR1,它提供了基本库,而2.0则添加了许多WinForms或WPF控件。

(更新于2017年10月26日。许多人已经在NuGet.org上发布了基于微软代码的NuGet包,因此您也可以查看这些包。)

票数 3
EN

Stack Overflow用户

发布于 2012-03-12 12:45:07

不确定是否有可用的操作系统(开源)包。然而,从理论上讲,构建这样的库并不是太难。在汉语中,大约有1300个单音:声母+韵母+声调。每个音都有一组汉字,数字从1到130个字符不等。

您可以定义一个包含所有拼音的数组:

代码语言:javascript
复制
string[] pinyins = new string[] {
  "a:c1c2c3...",      // pinyin 1 a: character1 character2...
  ...
  "zuo:z1z2z3z4z5..." // last pinyin (1300) zuo: character character...
};

上面的数组是将拼音映射到中文的基础(中文字符和拼音声调都是unicode字符串)。然后,对于每个拼音输入声音,通过如下函数获得字符列表:

代码语言:javascript
复制
string getCharacters(string aPinyin) {
   string characters = null;
   foreach(string item in pinyins) {
      string[] temp = item.split(':');
      if (temp[0].Equals(aPinyin)) {
          charaters = temp[1];
          break;
      }
   }
   return characters;
}

我很久以前写了一个JavaScipt,在那里我定义了拼音和汉字之间的关系。在我的博客:Get Pinyin From Chinese Characters中,可以通过查看源代码或上下文菜单中的Inspect元素找到该脚本。在我的博客中,脚本是用来将中文转换成拼音的,但这种关系可以作为参考。

要添加智能拼音功能--显示拼音的单词列表,可以通过以类似的模式定义所有常用单词来实现:拼音:单词。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9535408

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档