当前位置: 首页 > news >正文

c# 字符串帮助类

public class StringHelper
    {
        #region 全角半角互相转换
        /// <summary>
        /// 转全角的函数(SBC case)
        /// </summary>
        /// <param name="str">任意字符串</param>
        /// <returns>全角字符串</returns>
        ///<remarks>
        ///全角空格为12288,半角空格为32
        ///其他字符半角(33-126)与全角(65281-65374)的对应关系是:均相差65248
        ///</remarks>
        public static string ToSBC(string str)
        {
            //半角转全角:
            char[] c = str.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="str">任意字符串</param>
        /// <returns>半角字符串</returns>
        ///<remarks>
        ///全角空格为12288,半角空格为32
        ///其他字符半角(33-126)与全角(65281-65374)的对应关系是:均相差65248
        ///</remarks>
        public static string ToDBC(string str)
        {
            char[] c = str.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);
        }
        #endregion 全角半角互相转换

        #region 按照字节数截取字符串 一个汉字算2个字节

        /// <summary>
        /// 按照字节截取字符串 一个汉字算2个字节
        /// </summary>
        /// <param name="str">字符串</param>
        /// <param name="length">截取数量,单位:字节</param>
        /// <param name="flag">返回字符串 是否带省略号;true 带 false 不带</param>
        /// <returns></returns>
        public static string Substring(string str, int length, bool flag = true)
        {
            byte[] bytes = System.Text.Encoding.Default.GetBytes(str);
            string resultStr = str;
            if (bytes.Length > length)
            {
                resultStr = "";
                for (int i = 0; i < str.Length; i++)
                {
                    byte[] b = System.Text.Encoding.Default.GetBytes(resultStr);
                    if (b.Length < length)
                    {
                        resultStr += str.Substring(i, 1);
                    }
                    else
                    {
                        if (flag)
                        {
                            resultStr += "...";
                        }
                        break;
                    }
                }
            }
            return resultStr;
        }
        #endregion 按照字节数截取字符串 一个汉字算2个字节

        #region Unicode 编码 解码

        /// <summary>
        /// unicode 编码;例:((int)'以').ToString("x") 
        /// </summary>
        /// <param name="str"></param>
        /// <returns></returns>
        public static string UnicodeDecode(string str)
        {
            string outStr = "";
            if (str != "")
            {
                for (int i = 0; i < str.Length; i++)
                {
                    outStr += @"\u" + ((int)str[i]).ToString("x");
                }
            }
            return outStr;
        }

        /// <summary>
        /// Unicode解码 按照\u分割;例如:(char)int.Parse("4ee5", System.Globalization.NumberStyles.HexNumber) 
        /// </summary>
        /// <param name="str"></param>
        /// <returns></returns>
        public static string UnicodeEncode(string str)
        {
            MatchCollection mc = Regex.Matches(str, @"\\u([\w]{2})([\w]{2})", RegexOptions.Compiled | RegexOptions.IgnoreCase);
            foreach (Match m in mc)
            {
                string hz = ((char)int.Parse(m.Groups[1].Value + m.Groups[2].Value, System.Globalization.NumberStyles.HexNumber)).ToString();
                str = str.Replace(m.ToString(), hz);
            }
            return str;
        }
        #endregion Unicode 编码 解码
    }

http://www.lryc.cn/news/296891.html

相关文章:

  • LabVIEW双光子荧光显微成像系统开发
  • Prim模板
  • CSS之盒子模型
  • Linux系统安装(CentOS Vmware)
  • STM32 硬件随机数发生器(RNG)
  • Window环境下使用go编译grpc最新教程
  • STM32——FLASH(1)简单介绍、分类、读写流程及注意事项
  • MySQL的DML语言
  • Vivado-IP核
  • 品牌如何营造生活感氛围?媒介盒子分享
  • Java 学习和实践笔记(2)
  • Python:批量url链接保存为PDF
  • 【LeetCode每日一题】525连续数组 303区域和检索(前缀和的基本概念和3个简单案例)
  • 形态学算法应用之连通分量提取的python实现——图像处理
  • Kafka系列之:Kafka集群同时设置基于时间和日志大小两种方式保存Topic的数据
  • pytest+allure批量执行测试用例
  • SpringBoot和SpringMVC
  • 免费搭建幻兽帕鲁服务器,白嫖阿里云游戏服务器
  • [技术杂谈]如何下载vscode历史版本
  • nginx slice模块的使用和源码分析
  • AI应用开发-python实现redis数据存储
  • 2024年Java架构篇之设计模式
  • 搭建macOS开发环境-1:准备工作
  • 【Makefile语法 02】Makefile语法基础
  • 如何写一个其他人可以使用的GitHub Action
  • 排序算法的时间复杂度存在下界问题
  • 详解洛谷P2016 战略游戏/BZOJ0495. 树的最小点覆盖之战略游戏(贪心/树形DP)
  • 解决The Tomcat connector configured to listen on port 8080 failed to start
  • 深度学习自然语言处理(NLP)模型BERT:从理论到Pytorch实战
  • C语言的循环结构