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 编码 解码
    }

相关推荐

  1. c# 字符串帮助

    2024-02-15 20:44:01       48 阅读
  2. c# 缓存帮助

    2024-02-15 20:44:01       47 阅读
  3. c# DataTable 帮助

    2024-02-15 20:44:01       51 阅读
  4. C# 文件帮助(FileHelper)

    2024-02-15 20:44:01       54 阅读
  5. c# 命令行帮助

    2024-02-15 20:44:01       45 阅读
  6. c# 加密解密帮助

    2024-02-15 20:44:01       49 阅读
  7. c# 正则表达式 帮助

    2024-02-15 20:44:01       44 阅读
  8. c# Http Get Post Put Delete 请求帮助

    2024-02-15 20:44:01       46 阅读
  9. C++ 字符串 简易封装

    2024-02-15 20:44:01       42 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-02-15 20:44:01       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-02-15 20:44:01       100 阅读
  3. 在Django里面运行非项目文件

    2024-02-15 20:44:01       82 阅读
  4. Python语言-面向对象

    2024-02-15 20:44:01       91 阅读

热门阅读

  1. springboot开启mybatis二级缓存

    2024-02-15 20:44:01       49 阅读
  2. 判断日期是否符合格式

    2024-02-15 20:44:01       42 阅读
  3. 算法训练营day25(补),回溯5

    2024-02-15 20:44:01       55 阅读
  4. UVA1449 Dominating Patterns 题解

    2024-02-15 20:44:01       55 阅读
  5. git错误整理

    2024-02-15 20:44:01       44 阅读
  6. ES实战-高级聚合

    2024-02-15 20:44:01       46 阅读
  7. linux系统zabbix监控自定义监控

    2024-02-15 20:44:01       52 阅读