CSharp: pinyin in net 5 汉字拼音声调

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
using System;
using NPinyin; //https://github.com/WuTong1995/NPinyin
using Microsoft.International.Converters.PinYinConverter;
using Microsoft.International.Converters.TraditionalChineseToSimplifiedConverter;
 
using System.Linq;
using System.Text.RegularExpressions;
using System.Text;
 
/*
 css https://www.w3.org/International/questions/qa-ruby
https://developer.mozilla.org/zh-CN/docs/Web/HTML/Element/rt
 
https://www.microsoft.com/en-us/download/details.aspx?id=18970
 */
 
 
namespace ConsoleApp1
{
 
 
 
 
    class Program
    {
        static void Main(string[] args)
        {
 
            var hans = "涂聚文是中国江西吉州人,言语成了抢功尽责的功臣,还要行为来值班吗";
            var pinyin = new Pinyin();
            pinyin.Option = new PinyinOption()
            {
                //Style = PinyinStyle.Normal, // 不带声调(默认) zhong wen
                Style = PinyinStyle.Tone, // 带声调 zhōng wén
                EnableInterval = true       // 多个拼音之间是否启用间隔 zhong wen  zhongwen
            };
            var result = pinyin.ConvertToPinyin(hans); // zhong wen
 
            var pi = GetPinYin(hans);
 
            var pin = GetPinYinFull(hans);
 
            Console.WriteLine("Hello C# World! geovindu\t\n");
            Console.WriteLine(result.ToString()+ "\t\n");
            Console.WriteLine(pi.ToString() + "\t\n");
            Console.WriteLine(pin.ToString() + "\t\n");
 
        }
 
  
        /// <summary>
        /// 获得中文字符串的拼音 没有声调
        /// </summary>
        /// <param name="str"></param>
        /// <returns></returns>
        private static string GetPinYin(string str)
        {
            string py = "";
 
            for (int i = 0; i < str.Length; i++)
            {
                if (ChineseChar.IsValidChar(str[i]))//判断当前字符是不是汉字
                {
                    ChineseChar cc = new ChineseChar(str[i]);//构造方法
                    py +=" "+ cc.Pinyins[0].TrimEnd('1', '2', '3', '4', '5').ToLower();
                }
                else//不是汉字的话 加本身
                {
                    py += " " + str[i];
                }
 
            }
 
            return py;
        }
        ///<summary>
        /// 汉字
        /// </summary>
        private static string ChineseReg = "^[\\u4E00-\\u9FA5]+$";
 
        public static string GetPinYinFull(string str)
        {
            var pySb = new StringBuilder();
            foreach (var itemChar in str)
            {
                //过滤非汉字的字符,直接返回
                var reg = new Regex(ChineseReg);
                if (!reg.IsMatch(itemChar.ToString()))
                {
                    pySb.Append(" " + itemChar);
                }
                else
                {
                    var chineseChar = new ChineseChar(itemChar);
                    //var pyStr = chineseChar.Pinyins.First().ToLower();
                    var pyStr = chineseChar.Pinyins.First().ToUpper();
                    pySb.Append(" " + pyStr.Substring(0, pyStr.Length - 1));
                }
            }
            return pySb.ToString();
        }
 
        // <summary>
        /// 简体转换为繁体
        /// </summary>
        /// <param name="str">简体字</param>
        /// <returns>繁体字</returns>
        public static string GetTraditional(string str)
        {
            string r = string.Empty;
            r = ChineseConverter.Convert(str, ChineseConversionDirection.SimplifiedToTraditional);
            return r;
        }
        /// <summary>
        /// 繁体转换为简体
        /// </summary>
        /// <param name="str">繁体字</param>
        /// <returns>简体字</returns>
        public static string GetSimplified(string str)
        {
            string r = string.Empty;
            r = ChineseConverter.Convert(str, ChineseConversionDirection.TraditionalToSimplified);
            return r;
        }
 
    }
    
 
}

  

 

posted @   ®Geovin Du Dream Park™  阅读(26)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 零经验选手,Compose 一天开发一款小游戏!
· 一起来玩mcp_server_sqlite,让AI帮你做增删改查!!
历史上的今天:
2016-01-06 C# Web Forms - Using jQuery FullCalendar
2015-01-06 sql server query to get the list of column name in a table
< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5
点击右上角即可分享
微信分享提示