C# 转繁体转简体转拼音,超级文本大转换

最近项目中遇到一个需求:把员工的中文姓名根据系统配置转换成中文简体或中文繁体。

原以为需要一个很大的一个简体和繁体相对应的字符对应表之类的东西。

后来发现,VB中就包含了这样的函数Strings.StrConv(this.TextBox1.Text.Trim(), VbStrConv.TraditionalChinese, 0);

 

在网上搜索一下,还搜索到了转拼音,好东西,一定要收藏起来。哈哈!

 

 

ExpandedBlockStart.gif
using System;

using System.Collections;

using System.Globalization;
using System.Text;
using System.Threading;
using Microsoft.VisualBasic;

namespace pcmax {
    
/// <summary>
    
/// 汉字转拼音工具。
    
/// </summary>
    public sealed class CHS2PinYin {
        
/// <summary>
        
/// 包含字符 ASC 码的整形数组。
        
/// </summary>
        private static int[] pv = new int[] { -20319-20317-20304-20295-20292-20283-20265-20257-20242-20230-20051-20036-20032,
                                                
-20026-20002-19990-19986-19982-19976-19805-19784-19775-19774-19763-19756-19751-19746-19741,
                                                
-19739-19728-19725-19715-19540-19531-19525-19515-19500-19484-19479-19467-19289-19288-19281,
                                                
-19275-19270-19263-19261-19249-19243-19242-19238-19235-19227-19224-19218-19212-19038-19023,
                                                
-19018-19006-19003-18996-18977-18961-18952-18783-18774-18773-18763-18756-18741-18735-18731,
                                                
-18722-18710-18697-18696-18526-18518-18501-18490-18478-18463-18448-18447-18446-18239-18237,
                                                
-18231-18220-18211-18201-18184-18183-18181-18012-17997-17988-17970-17964-17961-17950-17947,
                                                
-17931-17928-17922-17759-17752-17733-17730-17721-17703-17701-17697-17692-17683-17676-17496,
                                                
-17487-17482-17468-17454-17433-17427-17417-17202-17185-16983-16970-16942-16915-16733-16708,
                                                
-16706-16689-16664-16657-16647-16474-16470-16465-16459-16452-16448-16433-16429-16427-16423,
                                                
-16419-16412-16407-16403-16401-16393-16220-16216-16212-16205-16202-16187-16180-16171-16169,
                                                
-16158-16155-15959-15958-15944-15933-15920-15915-15903-15889-15878-15707-15701-15681-15667,
                                                
-15661-15659-15652-15640-15631-15625-15454-15448-15436-15435-15419-15416-15408-15394-15385,
                                                
-15377-15375-15369-15363-15362-15183-15180-15165-15158-15153-15150-15149-15144-15143-15141,
                                                
-15140-15139-15128-15121-15119-15117-15110-15109-14941-14937-14933-14930-14929-14928-14926,
                                                
-14922-14921-14914-14908-14902-14894-14889-14882-14873-14871-14857-14678-14674-14670-14668,
                                                
-14663-14654-14645-14630-14594-14429-14407-14399-14384-14379-14368-14355-14353-14345-14170,
                                                
-14159-14151-14149-14145-14140-14137-14135-14125-14123-14122-14112-14109-14099-14097-14094,
                                                
-14092-14090-14087-14083-13917-13914-13910-13907-13906-13905-13896-13894-13878-13870-13859,
                                                
-13847-13831-13658-13611-13601-13406-13404-13400-13398-13395-13391-13387-13383-13367-13359,
                                                
-13356-13343-13340-13329-13326-13318-13147-13138-13120-13107-13096-13095-13091-13076-13068,
                                                
-13063-13060-12888-12875-12871-12860-12858-12852-12849-12838-12831-12829-12812-12802-12607,
                                                
-12597-12594-12585-12556-12359-12346-12320-12300-12120-12099-12089-12074-12067-12058-12039,
                                                
-11867-11861-11847-11831-11798-11781-11604-11589-11536-11358-11340-11339-11324-11303-11097,
                                                
-11077-11067-11055-11052-11045-11041-11038-11024-11020-11019-11018-11014-10838-10832-10815,
                                                
-10800-10790-10780-10764-10587-10544-10533-10519-10331-10329-10328-10322-10315-10309-10307,
                                                
-10296-10281-10274-10270-10262-10260-10256-10254 };

        
/// <summary>
        
/// 包含汉字拼音的字符串数组。
        
/// </summary>
        private static string[] ps = new string[] { "a""ai""an""ang""ao""ba""bai""ban""bang""bao""bei",
                                                      
"ben""beng""bi""bian""biao""bie""bin""bing""bo""bu""ca""cai""can""cang""cao""ce""ceng",
                                                      
"cha""chai""chan""chang""chao""che""chen""cheng""chi""chong""chou""chu""chuai""chuan""chuang",
                                                      
"chui""chun""chuo""ci""cong""cou""cu""cuan""cui""cun""cuo""da""dai""dan""dang""dao""de",
                                                      
"deng""di""dian""diao""die""ding""diu""dong""dou""du""duan""dui""dun""duo""e""en""er",
                                                      
"fa""fan""fang""fei""fen""feng""fo""fou""fu""ga""gai""gan""gang""gao""ge""gei""gen""geng",
                                                      
"gong""gou""gu""gua""guai""guan""guang""gui""gun""guo""ha""hai""han""hang""hao""he""hei",
                                                      
"hen""heng""hong""hou""hu""hua""huai""huan""huang""hui""hun""huo""ji""jia""jian""jiang""jiao",
                                                      
"jie""jin""jing""jiong""jiu""ju""juan""jue""jun""ka""kai""kan""kang""kao",
                                                      
"ke""ken""keng""kong""kou""ku""kua""kuai""kuan""kuang""kui""kun""kuo""la""lai""lan""lang""lao""le""lei""leng""li""lia""lian""liang""liao""lie""lin""ling""liu""long""lou""lu""lv""luan""lue""lun""luo""ma""mai""man""mang""mao""me""mei""men""meng""mi""mian""miao""mie""min""ming""miu""mo""mou""mu""na""nai""nan""nang""nao""ne""nei""nen""neng""ni""nian""niang""niao""nie""nin""ning""niu""nong""nu""nv""nuan""nue""nuo""o""ou""pa""pai""pan""pang""pao""pei""pen""peng""pi""pian""piao""pie""pin""ping""po""pu""qi""qia""qian""qiang""qiao""qie""qin""qing""qiong""qiu""qu""quan""que""qun""ran""rang""rao""re""ren""reng""ri""rong""rou""ru""ruan""rui""run""ruo""sa""sai""san""sang""sao""se""sen""seng""sha""shai""shan""shang""shao""she""shen""sheng""shi""shou""shu""shua""shuai""shuan""shuang""shui""shun""shuo""si""song""sou""su""suan""sui""sun""suo""ta""tai""tan""tang""tao""te""teng""ti""tian""tiao""tie""ting""tong""tou""tu""tuan""tui""tun""tuo""wa""wai""wan""wang""wei""wen""weng""wo""wu""xi""xia""xian""xiang""xiao""xie""xin""xing""xiong""xiu""xu""xuan""xue""xun""ya""yan""yang""yao""ye""yi""yin""ying""yo""yong""you""yu""yuan""yue""yun""za""zai""zan""zang""zao""ze""zei""zen""zeng""zha""zhai""zhan""zhang""zhao""zhe""zhen""zheng""zhi""zhong""zhou""zhu""zhua""zhuai""zhuan""zhuang""zhui""zhun""zhuo""zi""zong""zou""zu""zuan""zui""zun""zuo" };

        
/// <summary>
        
/// 包含要排除处理的字符的字符串数组。
        
/// </summary>
        private static string[] bd = new string[] { """""""""""""""""""""""""""""""""""""""""""""""""""" };

        
private static Hashtable _Phrase;

        
/// <summary>
        
/// 设置或获取包含列外词组读音的键/值对的组合。
        
/// </summary>
        public static Hashtable Phrase {
            
get {
                
if (_Phrase == null) {
                    _Phrase 
= new Hashtable();

                    _Phrase.Add(
"重庆""Chong Qing");
                    _Phrase.Add(
"深圳""Shen Zhen");
                    _Phrase.Add(
"什么""Shen Me");
                }

                
return _Phrase;
            }

            
set { _Phrase = value; }
        }

        
/// <summary>
        
/// 将指定中文字符串转换为拼音形式。
        
/// </summary>
        
/// <param name="chs">要转换的中文字符串。</param>
        
/// <param name="separator">连接拼音之间的分隔符。</param>
        
/// <param name="initialCap">指定是否将首字母大写。</param>
        
/// <returns>包含中文字符串的拼音的字符串。</returns>
        public static string Convert(string chs, string separator, bool initialCap) {
            
if (chs == null || chs.Length == 0return "";
            
if (separator == null || separator.Length == 0) separator = "";

            
// 例外词组
            foreach (DictionaryEntry de in CHS2PinYin.Phrase) {
                chs 
= chs.Replace(de.Key.ToString(), String.Format(" {0} ", de.Value.ToString().Replace(" ", separator)));
            }

            
//先对字符做全角转半角
            chs = ToDBC(chs);
            chs 
= Microsoft.VisualBasic.Strings.StrConv(chs, Microsoft.VisualBasic.VbStrConv.SimplifiedChinese, 0);

            
byte[] array = new byte[2];
            
string returnstr = "";
            
int chrasc = 0;
            
int i1 = 0;
            
int i2 = 0;
            
bool b = false;
            
char[] nowchar = chs.ToCharArray();

            CultureInfo ci 
= Thread.CurrentThread.CurrentCulture;
            TextInfo ti 
= ci.TextInfo;

            
for (int j = 0; j < nowchar.Length; j++) {
                array 
= Encoding.Default.GetBytes(nowchar[j].ToString());
                
string s = nowchar[j].ToString(); ;

                
if (array.Length == 1) {
                    b 
= true;
                    returnstr 
+= s;
                }
                
else {
                    
if (s == "") {
                        
if (returnstr == "" || b == true) returnstr += s;
                        
else returnstr += separator + s;

                        
continue;
                    }

                    i1 
= (short)(array[0]);
                    i2 
= (short)(array[1]);

                    chrasc 
= i1 * 256 + i2 - 65536;

                    
for (int i = (pv.Length - 1); i >= 0; i--) {
                        
if (pv[i] <= chrasc) {
                            s 
= ps[i];

                            
if (initialCap == true) s = ti.ToTitleCase(s);

                            
if (returnstr == "" || b == true) returnstr += s;
                            
else returnstr += separator + s;

                            
break;
                        }
                    }

                    b 
= false;
                }
            }

            returnstr 
= returnstr.Replace(" ", separator);
            
return returnstr;
        }

        
/// <summary>
        
/// 将指定中文字符串转换为拼音形式。
        
/// </summary>
        
/// <param name="chs">要转换的中文字符串。</param>
        
/// <param name="separator">连接拼音之间的分隔符。</param>
        
/// <returns>包含中文字符串的拼音的字符串。</returns>
        public static string Convert(string chs, string separator) {
            
return CHS2PinYin.Convert(chs, separator, false);
        }

        
/// <summary>
        
/// 将指定中文字符串转换为拼音形式。
        
/// </summary>
        
/// <param name="chs">要转换的中文字符串。</param>
        
/// <param name="initialCap">指定是否将首字母大写。</param>
        
/// <returns>包含中文字符串的拼音的字符串。</returns>
        public static string Convert(string chs, bool initialCap) {
            
return CHS2PinYin.Convert(chs, "", initialCap);
        }

        
/// <summary>
        
/// 将指定中文字符串转换为拼音形式。
        
/// </summary>
        
/// <param name="chs">要转换的中文字符串。</param>
        
/// <returns>包含中文字符串的拼音的字符串。</returns>
        public static string Convert(string chs) {
            
return CHS2PinYin.Convert(chs, "");
        }

        
/// <summary>
        
/// 转全角的函数(SBC case)
        
/// </summary>
        
/// <param name="input">任意字符串</param>
        
/// <returns>全角字符串</returns>
        
///<remarks>
        
///全角空格为12288,半角空格为32
        
///其他字符半角(33-126)与全角(65281-65374)的对应关系是:均相差65248
        
///</remarks>        
        public static string ToSBC(string input) {
            
//半角转全角:
            char[] c = input.ToCharArray();
            
for (int i = 0; i < c.Length; i++) {
                
if (c[i] == 32) {
                    c[i] 
= (char)12288;
                    
continue;
                }
                
if (c[i] < 127)
                    c[i] 
= (char)(c[i] + 65248);
            }
            
return new string(c);
        }


        
/// <summary>
        
/// 转半角的函数(DBC case)
        
/// </summary>
        
/// <param name="input">任意字符串</param>
        
/// <returns>半角字符串</returns>
        
///<remarks>
        
///全角空格为12288,半角空格为32
        
///其他字符半角(33-126)与全角(65281-65374)的对应关系是:均相差65248
        
///</remarks>
        public static string ToDBC(string input) {
            
char[] c = input.ToCharArray();
            
for (int i = 0; i < c.Length; i++) {
                
if (c[i] == 12288) {
                    c[i] 
= (char)32;
                    
continue;
                }
                
if (c[i] > 65280 && c[i] < 65375)
                    c[i] 
= (char)(c[i] - 65248);
            }
            
return new string(c);
        }

        
///   <summary> 
        
///   转换为简体中文 
        
///   </summary> 
        public static string ToSChinese(string str) {
            
return Strings.StrConv(str, VbStrConv.SimplifiedChinese, 0);
        }

        
///   <summary> 
        
///   转换为繁体中文 
        
///   </summary> 
        public static string ToTChinese(string str) {
            
return Strings.StrConv(str, VbStrConv.TraditionalChinese, 0);
        }
    }
}

 

 

转载于:https://www.cnblogs.com/luqingfei/archive/2011/01/17/1937058.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/475775.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Feature Engineering 特征工程 4. Feature Selection

文章目录1. Univariate Feature Selection 单变量特征选择2. L1 regularization L1正则learn from https://www.kaggle.com/learn/feature-engineering上一篇&#xff1a;Feature Engineering 特征工程 3. Feature Generation 经过各种编码和特征生成后&#xff0c;通常会拥有…

分销平台使用手册

分销平台使用手册 分销商和供应商流程图 基本资料维护 1、分销联系人资料&#xff1a;包括&#xff1a;联系人&#xff1b;联系固话&#xff08;手机号码&#xff09;&#xff1b;email&#xff1b;阿里旺旺&#xff08;建议用已认证过的账号或商城店铺的阿里旺旺子账号&#x…

LeetCode 474. 一和零(01背包动态规划)

1. 题目 在计算机界中&#xff0c;我们总是追求用有限的资源获取最大的收益。 现在&#xff0c;假设你分别支配着 m 个 0 和 n 个 1。另外&#xff0c;还有一个仅包含 0 和 1 字符串的数组。 你的任务是使用给定的 m 个 0 和 n 个 1 &#xff0c;找到能拼出存在于数组中的字…

android es管理工具,Android

Android ES文件管理器在文件管理器中&#xff0c;ES文件管理器的名气是比较大的&#xff0c;这款文件管理器也在近日进行了更新&#xff0c;更新后的ES文件管理器支持了更多网络存储空间&#xff0c;可以直接访问百度网盘、快盘、酷盘、微盘、box、sugarsync、dropbox和skydriv…

深入浅出InfoPath——让管理员来部署InfoPath表单

应用场景&#xff1a; 我们&#xff08;乙方&#xff09;在给客户提供基于InfoPath表单&#xff08;尤其是包含托管代码的&#xff09;的工作流解决方案的时候&#xff0c;常常需要客户&#xff08;甲方&#xff09;的SharePoint管理员来帮忙在安装SharePoint Server的服务器上…

LeetCode 932. 漂亮数组(分治递归/循环)

文章目录1. 题目2. 解题2.1 分治递归2.2 循环1. 题目 对于某些固定的 N&#xff0c;如果数组 A 是整数 1, 2, …, N 组成的排列&#xff0c;使得&#xff1a; 对于每个 i < j&#xff0c;都不存在 k 满足 i < k < j 使得 A[k] * 2 A[i] A[j]。 那么数组 A 是漂亮…

android 修改系统参数设置,2021-05-15 [RK3399][Android7.1] 调试笔记 ---显示参数动态设置接口...

系统环境&#xff1a;Platform: RK3399OS: Android 7.1Kernel: v4.4.83接口代码所在位置为&#xff1a;/frameworks/base/core/java/android/os/DisplayOutputManager.java如图&#xff1a;image.png1. 设置背光亮度public void setBrightness(int display, int brightness)设置…

Lucene.Net:关于索引的一些补充说明和总结

在前面的几篇关于lucene的文章中&#xff0c;我已经简要说明了如何利用lucene进行分词、索引和搜索。最近大部分时间耗在查资料上&#xff0c;看得比较多比较杂但是一贯的不够深入&#xff0c;还好多数都是不会影响编程实践的概念性的东西。有时候我自己也感觉到有心无力&#…

在2008 server安装vm server时发生的错误error1718、error1335……

;转载于:https://www.cnblogs.com/minglog/archive/2011/02/15/1955290.html

hibernate3.6.0日志配置

hibernate3 自带的默认的日志框架是slf4j&#xff0c;hibernate3的slf只是一个日志的接口&#xff0c;而hibernate3 自带默认的日志框架&#xff0c;在实际开发中很少有公司或者是项目中用到&#xff0c;这里记录一种使用log4j的日志框架来代替slf4j日志框架的实现&#xff0c;…

android stackview,Android StackView 使用示例

cell.xml 布局文件&#xff1a;xmlns:android"http://schemas.android.com/apk/res/android"android:id"id/cellImage"android:layout_width"200dp"android:layout_height"200dp"/>主布局文件&#xff1a;android:id"id/activ…

WCF 体系结构图

转载于:https://www.cnblogs.com/agressivo/articles/1958858.html

android studio电影院选座,8排电影院选座最佳位置

8排电影院选座最佳位置在哪里呢&#xff1f;8排电影院属于小影厅&#xff0c;小影厅银幕宽度在10米以下&#xff0c;座位100以内&#xff0c;座位排数通常拥有8-14排&#xff0c;小影厅整体空间小&#xff0c;选座时要选中间稍靠后一些的位置。由于整体排数少&#xff0c;因此选…

仿Jquery链式操作的xml操作类

经常需要对xml文件进行操作&#xff0c;参考了Jquery的链式操作后实现了xmlHelper类。代码usingSystem;usingSystem.Data;usingSystem.Configuration;usingSystem.Xml;namespaceConfigUpdate{ ///<summary>///调用非静态的操作方法的 ///</summary>publiccla…

4月17日鸿蒙开发者大会,4月17日这天,将载入华为史册

文/笨鸟原创不易&#xff0c;禁止抄袭、洗稿&#xff0c;违者必究&#xff01;万众瞩目的华为鸿蒙系统对于国人来说&#xff0c;一部智能手机只有实现了芯片和系统技术的自主化&#xff0c;才能被称之为真正的国产手机。而就目前的国内手机市场而言&#xff0c;除华为之外的所有…

html仿手机界面,javascript新手实例3-仿手机聊天界面(if else运用)

今天给大家一个if else的Javascript小示例&#xff0c;其中我在js文件里写了很多注释&#xff0c;有兴趣的同学自己看注释&#xff0c;另外对于聊天界面的显示方式&#xff0c;我写了两种&#xff0c;大家也可以分别试试&#xff1a;老规矩&#xff0c;先上图&#xff1a;html代…

LeetCode 1457. 二叉树中的伪回文路径(位运算+递归)

1. 题目 给你一棵二叉树&#xff0c;每个节点的值为 1 到 9 。我们称二叉树中的一条路径是 「伪回文」的&#xff0c;当它满足&#xff1a;路径经过的所有节点值的排列中&#xff0c;存在一个回文序列。 请你返回从根到叶子节点的所有路径中 伪回文 路径的数目。 示例 1&…

LeetCode 837. 新21点(动态规划)

文章目录1. 题目2. 解题2.1 暴力超时2.2 优化1. 题目 爱丽丝参与一个大致基于纸牌游戏 “21点” 规则的游戏&#xff0c;描述如下&#xff1a; 爱丽丝以 0 分开始&#xff0c;并在她的得分少于 K 分时抽取数字。 抽取时&#xff0c;她从 [1, W] 的范围中随机获得一个整数作为…

计算机网络划分的标准,计算机网络基础

1.具有统一的网络体系结构、遵循国际标准化协议的计算机网络在第三代网络出现以前各厂家为了霸占市场采用自己独特的技术并开发了自己的网络体系结构网络无法实现不同厂家设备互连这样就阻碍了大范围网络的发展。后来为了实现网络大范围的发展和不同厂家设备的互连1977年国际标…

大型软件是否占用计算机内存,电脑系统开机内存占用多少正常

原标题&#xff1a;电脑系统开机内存占用多少正常正常情况下有多少启动内存&#xff1f;如果使用2G内存&#xff0c;则Win7在启动时基本上可以达到50&#xff05;以上&#xff0c;运行点程序肯定会达到80&#xff05;&#xff0c;这是正常的。如果使用4G内存&#xff0c;则Win7…