亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > C# > 正文

C#漢字轉拼音實例(支持多音字)

2019-10-29 21:16:57
字體:
來源:轉載
供稿:網友

之前由于項目需要,中間需要一個漢字轉拼音和首拼的功能來做查詢,感覺這種功能基本已經成熟化了,于是查找了相關的代碼,首先引入眼簾的是下面兩篇文章

寫的比較全也很詳細,都有提供源碼,大家可以參考下。

由于考慮到接口的需要,于是參考了 第一篇,文章中作者的源碼基本能滿足漢字轉拼音的需要,對于其他特殊的字符,也可以在進行添加補充,不足之處就是不支持多音字,由于需要支持多音字的查詢,所以后面有查了下其他的文章,發現還沒有現成的文章(也可能本人的搜索水平比較水)。后來查找發現對于漢字轉拼音,原來微軟已經提供了 Microsoft Visual Studio International Pack ,而且很強大。于是試了一下

首先在nuget引用對應的包

查找 PinYinConverter

c#,漢字轉拼音,多音字

簡單的demo

小試一下,使用也非常簡單,只要直接使用ChineseChar類進行裝換就好

string ch = Console.ReadLine();ChineseChar cc = new ChineseChar(ch[0]);var pinyins = cc.Pinyins.ToList();pinyins.ForEach(Console.WriteLine);

結果如下:

c#,漢字轉拼音,多音字

我們可以看到, 行 的多音字有 hang,heng,xing 三個,這里連音標也出來了,確實很方便。而我需要的功能是輸入 銀行 ,然后轉換為拼音是 yinhang,yinheng,yinxing,  首拼是 yh,yx。有ChineseChar 這個類的話做起來思路就簡單了。

漢字轉拼音類封裝

1.首先對輸入的漢字進行拆分

2.接著每個漢字用ChineseChar 獲取多個拼音

3.然后除去數字,去重,提取首字符,再在進行組合就好了

于是寫了個幫助類進行裝換,代碼如下:

  public class PinYinConverterHelp  {    public static PingYinModel GetTotalPingYin(string str)    {      var chs = str.ToCharArray();      //記錄每個漢字的全拼      Dictionary<int, List<string>> totalPingYins = new Dictionary<int, List<string>>();      for (int i = 0; i < chs.Length; i++)      {        var pinyins = new List<string>();        var ch = chs[i];        //是否是有效的漢字        if (ChineseChar.IsValidChar(ch))        {          ChineseChar cc = new ChineseChar(ch);          pinyins = cc.Pinyins.Where(p => !string.IsNullOrWhiteSpace(p)).ToList();        }        else        {          pinyins.Add(ch.ToString());        }        //去除聲調,轉小寫        pinyins = pinyins.ConvertAll(p => Regex.Replace(p, @"/d", "").ToLower());        //去重        pinyins = pinyins.Where(p => !string.IsNullOrWhiteSpace(p)).Distinct().ToList();        if (pinyins.Any())        {          totalPingYins[i] = pinyins;        }      }      PingYinModel result = new PingYinModel();      foreach (var pinyins in totalPingYins)      {        var items = pinyins.Value;        if (result.TotalPingYin.Count <= 0)        {          result.TotalPingYin = items;          result.FirstPingYin = items.ConvertAll(p => p.Substring(0, 1)).Distinct().ToList();        }        else        {          //全拼循環匹配          var newTotalPingYins = new List<string>();          foreach (var totalPingYin in result.TotalPingYin)          {            newTotalPingYins.AddRange(items.Select(item => totalPingYin + item));          }          newTotalPingYins = newTotalPingYins.Distinct().ToList();          result.TotalPingYin = newTotalPingYins;          //首字母循環匹配          var newFirstPingYins = new List<string>();          foreach (var firstPingYin in result.FirstPingYin)          {            newFirstPingYins.AddRange(items.Select(item => firstPingYin + item.Substring(0, 1)));          }          newFirstPingYins = newFirstPingYins.Distinct().ToList();          result.FirstPingYin = newFirstPingYins;        }      }      return result;    }  }  public class PingYinModel  {    public PingYinModel()    {      TotalPingYin = new List<string>();      FirstPingYin = new List<string>();    }    //全拼    public List<string> TotalPingYin { get; set; }    //首拼    public List<string> FirstPingYin { get; set; }  }

調用方式:

 Console.WriteLine("請輸入中文:"); string str = Console.ReadLine();var strs = PinYinConverterHelp.GetTotalPingYin(str).TotalPingYin;var frists = PinYinConverterHelp.GetTotalPingYin(str).FirstPingYin; Console.WriteLine("全拼音:" + String.Join(",", strs)); Console.WriteLine("首音:" + String.Join(",", frists));Console.WriteLine();

結果:

 c#,漢字轉拼音,多音字

目前試過一些生僻字都是能支持,對于一些太偏的還沒試過,不過對于一般漢字轉拼音的,多音字支持這里就已經足夠了。

這里僅僅是使用了 Microsoft Visual Studio International Pack 這個擴展包里面的漢字轉拼音功能,其實里面還有中文、日文、韓文、英語等各國語言包,并提供方法實現互轉、獲、獲取字數、甚至獲取筆畫數等等強大的功能,有興趣的朋友可以自行查詢下它的api。

 源碼分享

分享是一種美德,有時候牛逼的文章可以提高我們的技術層面,但有時候更多的需求是業務層面,很多小知識應用的分享卻可以幫我們提高業務層面的問題。只要分享的知識點有用,不誤人子弟,哪怕大小都是一種學習,所以也希望大家能勇于分享。

 最后,源碼分享出來給大家,如果有錯誤和不足的地方,也希望指正

地址:demo 

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持VEVB武林網。


注:相關教程知識閱讀請移步到c#教程頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
日韩欧美国产高清91| 亚洲iv一区二区三区| 欧美大成色www永久网站婷| 国产精品人成电影在线观看| 日韩欧美福利视频| 久久久av网站| 国产亚洲欧美视频| 欧美大学生性色视频| 在线观看国产欧美| 中文字幕日韩有码| 欧美乱人伦中文字幕在线| 亚洲的天堂在线中文字幕| 国产亚洲一级高清| 国产成人亚洲综合91精品| 欧美视频在线观看 亚洲欧| 日韩av手机在线| 亚洲一区二区三| 国产欧美精品在线| 国产精品吊钟奶在线| 亚洲精选中文字幕| 亚洲日本中文字幕| 亚洲天堂av综合网| 亚洲欧美日韩视频一区| 日韩欧美成人区| 91深夜福利视频| 日韩精品在线观看一区二区| 亚洲欧美日韩国产成人| 久久久久久久久亚洲| 国产欧美va欧美va香蕉在| 国产99视频在线观看| 精品视频久久久久久久| 欧美日韩国产一中文字不卡| 一区二区三区美女xx视频| 国产69精品久久久久久| 亚洲国产精品系列| 欧美极度另类性三渗透| 一夜七次郎国产精品亚洲| 久久五月天综合| 亚洲人成在线免费观看| 在线观看成人黄色| 国产精品爱啪在线线免费观看| 国产91ⅴ在线精品免费观看| 久久精品国产免费观看| 欧美丝袜第一区| 亚洲一区二区三区xxx视频| 国产午夜精品理论片a级探花| 欧洲日韩成人av| 亚洲性夜色噜噜噜7777| 国产色婷婷国产综合在线理论片a| 国产亚洲a∨片在线观看| 欧美激情国产日韩精品一区18| 欧美与欧洲交xxxx免费观看| 亚洲国产私拍精品国模在线观看| 在线看福利67194| 91精品美女在线| 国产精品678| www.欧美视频| 国产自产女人91一区在线观看| 国产欧美最新羞羞视频在线观看| 欧美激情一区二区三区高清视频| 91香蕉嫩草神马影院在线观看| 国产精品丝袜视频| 国内精品久久久久久久久| 成人网页在线免费观看| 亚洲深夜福利视频| 热久久免费国产视频| 午夜欧美大片免费观看| 最近2019中文字幕一页二页| 久久天堂av综合合色| 国产丝袜精品视频| 国产精品激情av电影在线观看| 成人免费看片视频| 亚洲第一二三四五区| xvideos国产精品| 日韩欧美国产中文字幕| 欧美日韩国产色视频| 国产91精品视频在线观看| 国产一区二区动漫| 国产成人av网址| 成人久久精品视频| 粉嫩av一区二区三区免费野| 国产精品偷伦免费视频观看的| 国产不卡视频在线| 国产热re99久久6国产精品| 久久久精品国产一区二区| 91高清在线免费观看| 国产视频999| 亚洲乱亚洲乱妇无码| 国产精品福利在线| 国产69精品久久久久9| 欧美一级视频免费在线观看| 亚洲天堂第一页| 久久久噜噜噜久久中文字免| 亚洲精品久久7777777| 亚洲国产精品久久久| 亚洲精品日韩av| 久久精品夜夜夜夜夜久久| 红桃av永久久久| 少妇高潮久久久久久潘金莲| 日韩在线免费视频观看| 国产精品一区二区av影院萌芽| 欧美另类69精品久久久久9999| 精品久久久久久| 欧美激情第一页xxx| 欧美性videos高清精品| 国产极品精品在线观看| 中文字幕亚洲激情| 久久久成人精品| 国内偷自视频区视频综合| 久久国产精品首页| 色综合天天狠天天透天天伊人| 亚洲一区二区三区在线免费观看| 色妞欧美日韩在线| 欧美一区二区大胆人体摄影专业网站| 亚洲视频在线观看| 亚洲久久久久久久久久| 国产欧美日韩免费看aⅴ视频| 亚洲黄页网在线观看| 久久福利视频网| 91久久精品美女高潮| 欧美日韩亚洲精品内裤| 国产一区二区黑人欧美xxxx| 久热国产精品视频| 国产精品99久久久久久久久久久久| 欧美日韩999| 91精品国产免费久久久久久| 亚洲人成毛片在线播放| 欧美激情在线播放| 亚洲成色www8888| 日韩精品中文字幕有码专区| 久久艳片www.17c.com| 欧美激情a∨在线视频播放| 久久97精品久久久久久久不卡| www.精品av.com| 亚洲国产精品一区二区三区| 中文字幕欧美专区| 日本精品免费一区二区三区| 久久中文字幕视频| 午夜精品免费视频| 91精品国产高清久久久久久| 国产91ⅴ在线精品免费观看| 国产日韩欧美视频在线| 日韩免费中文字幕| 欧美电影院免费观看| 国产一区香蕉久久| 国产精品福利在线观看网址| 51精品国产黑色丝袜高跟鞋| 精品亚洲一区二区三区| 国产精品入口夜色视频大尺度| 成人国产在线视频| 国产激情视频一区| 精品呦交小u女在线| 国产精品激情av在线播放| 欧美自拍大量在线观看| 高清欧美性猛交xxxx| 精品国产拍在线观看| 欧美在线性视频| 亚洲国产欧美久久| 色婷婷综合久久久久| 日韩成人av一区| 国产精品久久久av| 久久香蕉精品香蕉| 亚洲丁香久久久| 国产成人久久精品|