读书人

依据字符长度截取而非字节长度截取的方

发布时间: 2012-08-16 12:02:16 作者: rapoo

根据字符长度截取而非字节长度截取的方法

?

public static string GetChStringByLength(string s, int len)        {            byte[] data = Encoding.GetEncoding("GB18030").GetBytes(s);            //算出需要截取的byte长度            len *= 2;            //如果长度小于等于指定长度则直接返回            if (data.Length <= len)            {                return s;            }            //判断最后一个字节是否为汉字,如果是则截取掉最后一个byte            int chByteLen = 0; //中文字节的长度            for (int i = len - 1; i >= 0; i--)            {                if (data[i] >= 128)                {                    //记录中文字节长度                    chByteLen++;                }                else                {                    break;                }            }            //如果是奇数则截取掉最后一个byte            if (chByteLen % 2 == 1)            {                len--;            }            byte[] newData = new byte[len];            Array.Copy(data, newData, len);            return Encoding.GetEncoding("GB18030").GetString(newData);        }

读书人网 >互联网

热点推荐