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); }
根据字符长度截取而非字节长度截取的方法
猜你喜欢
转载自heavenslv.iteye.com/blog/966826
今日推荐
周排行