c# 中文字符(全角、半角)通用处理

本文介绍了一种通过扩展方法处理中文编程问题的方法,包括全角半角转换及获取汉字拼音首字母的功能实现。这些方法能够帮助开发者更高效地处理中文字符串,尤其是在涉及用户输入的情景下。

声明:本文仅提供一种编程思路,所提供代码仅供参考,如需使用,请自行完善。

我们在做程序的的时候经常要处理用户输入,作为我们的主要语言中文,经常会出现全角、半角的问题,这会在查询时给我们带来很多麻烦。
本文采用扩展方法解决全半角切换的问题,效果图

代码如下:


        public static void Example(string userInput)
        {
            string sbc = userInput.ToSBC(); //转全角
            //具体操作,如存入数据库 
            string dbc = userInput.ToDBC();//转半角
            //具体操作,如存入数据库 
        }

        /// <summary>
        /// 转全角(SBC case)
        /// </summary>
        /// <param name="input">任意字符串</param>
        /// <returns>全角字符串</returns>

        public static string ToSBC(this 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>

        public static string ToDBC(this 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);
        }


中文处理中另一个常用的是获取拼音首字母,如:中华人民共和国,首字母为ZHRMGHG。很多库存管理程序中都将这个作为助记码,用作快速查询。
这里只给出扩展定义和示例,具体实现网上很多,但大部分都不能解决多音字的问题。


        public static void Example2(string productName)
        {
            string shortName = productName.GetChineseSpell();
        }


        /// <summary>
        /// 获取汉字拼音首字母
        /// </summary>
        /// <param name="s">输入</param>
        /// <returns>汉字拼音首字母,其它字符原样返回</returns>

        public static string GetChineseSpell(this string s)
        {
            return null;//请自行完成
        }


还有中文简体繁体互转,也可以扩展进来。

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值