C# 区分全/半角截取子字符串

在 做网站的时候,为了避免字符串过长而出现换行的现象.往往要截取一段子串来显示.但C#里不论你的字符是全角还是半角.C#都认为它是一个字符.这样的 话.如果我们的字符串里有字母也有汉字,往往使我们截取的字符串过短.在页面上显示时就很不美观.因此本人写下如下两个函数....问题解决了.

         public static string GetSubString(string value, int Len)
        {
            if (value.Length < Len)
                return value;

            int halfwordcount = 0;

            for (int i = 0; i < Len; i++)
            {
                if (CheckHalfWord(value[i].ToString()))
                {
                    halfwordcount++;
                }
            }
            if (halfwordcount == 0)
            {
                return value.Substring(0, Len)+"...";
            }
            else
            {
                //Len += halfwordcount / 2;
                //if (value.Length > Len)
                //    return value.Substring(0, Len) + "...";
                //else return value;
                if (value.Length > Len + halfwordcount / 2)
                    return value.Substring(0, Len) + GetSubString(value.Substring(Len), halfwordcount / 2) ;
                else
                    return value;
            }
        }

        private static bool CheckHalfWord(string value)
        {
            if (1 == System.Text.Encoding.Default.GetByteCount(value))
            {
                return true;
            }
            else
            {
                return false;
            }
        }

posted @ 2010-08-19 17:51  yuanyue82  阅读(297)  评论(0编辑  收藏  举报