c# 全角转半角

 

 

   /// <summary>
        ///判断字符是否英文半角字符或标点
        //32    空格
        //33-47    标点
        //48-57    0~9
        //58-64    标点
        //65-90    A~Z
        //91-96    标点
        //97-122    a~z
        //123-126  标点
        /// </summary>
        /// <param name="c"></param>
        /// <returns></returns>
        public static bool IsBjChar(char c)
        {
            int i = (int)c;
            return i >= 32 && i <= 126;
        }

        /// 判断字符是否全角字符或标点
        /// 全角字符 - 65248 = 半角字符
        /// 全角空格例外

        public static bool IsQjChar(char c)
        {
            if (c == '\u3000')
            {
                return true;
            }
            int i = (int)c - 65248;
            if (i < 32)
            {
                return false;
            }
            else
            {
                return IsBjChar((char)i);
            }
        }

        /// <summary>
        /// 将字符串中的全角字符转换为半角
        /// </summary>
        /// <param name="s"></param>
        /// <returns></returns>
        public static string ToBj(string s)
        {
            if (s == null ||  string.IsNullOrEmpty(s.Trim()))
            {
                return "";
            }
            else
            {
                StringBuilder sb = new StringBuilder(s.Length);
                for (int i = 0; i < s.Length; i++)
                {
                    if (s[i] == '\u3000')
                    {
                        sb.Append('\u0020');
                    }
                    else if (IsQjChar(s[i]))
                    {
                        sb.Append((char)((int)s[i] - 65248));
                    }
                    else
                    {
                        sb.Append(s[i]);
                    }
                }
                return sb.ToString();
            }
        }

 

posted @ 2021-09-26 11:45  低调码农哥!  阅读(233)  评论(0编辑  收藏  举报