首页 > 其他分享 >CSharp: pinyin in net 5 汉字拼音声调

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

时间:2024-01-06 11:22:33浏览次数:19  
标签:string pinyin new static str CSharp var using net

 

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;
        }

    }
   

}

  

 

标签:string,pinyin,new,static,str,CSharp,var,using,net
From: https://www.cnblogs.com/geovindu/p/17948687

相关文章

  • aspnetcore使用websocket实时更新商品信息
    先演示一下效果,再展示代码逻辑。中间几次调用过程省略。。。暂时只用到了下面四个项目1.产品展示页面中第一次通过接口去获取数据库的列表数据///<summary>///获取指定的商品目录///</summary>///<paramname="pageSize"></param>///<paramname="pageIndex"></p......
  • Kubernetes高可用集群二进制部署v1.28.0版本
    一、集群环境准备1.1主机规划        主机IP地址主机名主机配置主机角色软件列表192.168.198.144k8s-master12C4Gmasterkube-apiserver、kube-controller-manager、kube-scheduler、etcd、kubectl192.168.198.145k8s-master22C4Gmasterkube-ap......
  • [CSharpTips]C# 获取OPCUA服务器节点
    C# 获取OPCUA服务器节点1.创建OPCUA服务器可以参考 KepServerv设置为OPCUA通讯说明_kepserveropcua-CSDN博客2.创建控制台工程,Nuget安装OpcUaHelper 3.Demo如下参考了OpcUaHelper源码 https://github.com/dathlin/OpcUaHelperusingOpc.Ua;usingOpcUaHelper;using......
  • 第5章 在 ASP.NET Core Web 应用进程中使用 EF Core
    本章涵盖在ASP.NETCore中使用EFCore在ASP.NETCore中使用依赖注入在ASP.NET核心MVC操作中访问数据库使用EFCore迁移更新数据库使用async/await提高可扩展性在本章中,您将使用ASP.NETCore构建一个真正的Web应用进程,将所有内容集成在一起。当然,使用ASP.N......
  • 【云原生 | Kubernetes 系列】— Kubernetes存储方案
    目录【云原生|Kubernetes系列】—Kubernetes存储方案......
  • Kubernetes容器运维与编排技术的精髓
    Kubernetes容器运维与编排技术的精髓在当今云原生技术的浪潮中,Kubernetes(简称K8s)无疑是最为引人注目的容器编排工具之一。作为一个强大而灵活的平台,Kubernetes在容器化应用的自动部署、扩展、管理方面展现了其卓越的能力。本篇博文将深度剖析Kubernetes容器运维与编排技术,重点关注......
  • 深度解析Kubernetes架构
    @[TOC]深度解析Kubernetes架构Kubernetes(K8s)是一个开源的容器编排平台,用于自动化容器的部署、扩展和管理。它提供了一个强大的、可扩展的架构,支持容器化应用的高效部署和运维。在这篇博文中,我们将深度解析Kubernetes的架构,深入探讨其各个组件和它们之间的交互。1.1:Kubernetes核心组......
  • Kubernetes v1.29 新特性一览
     Kubernetesv1.29新特性一览大纲 一、Core组件增强 调度器增强 在Kubernetesv1.29中,Core组件经历了一系列增强,其中一个重要的改进是调度器的增强。这些增强使得调度器能够更加智能和高效地管理容器的调度和分配。通过引入新的调度算法和策略,调度器能够更好地适应不同的资源......
  • el-select 支持拼音搜索(含插件 pinyin-match 的使用)
    效果预览安装插件pinyin-matchcnpmipinyin-match--save导入插件pinyin-matchimportPinYinMatchfrom"pinyin-match";在过滤方法中使用matchFruit(searchContent){if(searchContent){letresult=[];this.list_org.forEach((item)=>{......
  • 当创建一个ingress后,kubernetes会发什么?
    本文分享自华为云社区《当创建一个ingress后,kubernetes会发什么?》,作者:可以交个朋友。一、Ingress概述Ingress是一组路由转发规则合集,将集群内部服务通过7层协议暴露给用户,是一种k8s默认的资源。Ingress资源对象用于定义来自外网的HTTP和HTTPS规则,流量路由由Ingress资源上定义的规则......