自己也写串截取函数,精确到字符

 

public string substr(string str, int len, string type)

    {

      //str 源串内容
      //len 长度,这里要注意,len参数指代的是全角字符的个数
      //type 参数用来表示,返回串带不带省略号....

        int bytecount = Encoding.Default.GetByteCount(str);

        len = len * 2;

        int sum = 0;

        if (bytecount > len)

        {

            for (int i = 0; i < len; i++)

            {

                if (sum < len)

                {

                    sum += Encoding.Default.GetByteCount(str[i].ToString());

                }

                else

                {

                    if (sum % 2 == 0)

                    {

                        sum = i;

                    }

                    else

                    {

                        sum = i - 1;

                    }

                    break;

                }

            }

            str = str.Substring(0, sum);

            switch (type)

            {

                case "1":

                    str += "...";

                    break;

                default:

                    break;

            }

        }

        return str;

}

posted @ 2009-06-04 15:42  操作者  阅读(242)  评论(0编辑  收藏  举报