1 #region 截取指定字节长度的字符串 2 /// <summary> 3 /// 截取指定字节长度的字符串 4 /// </summary> 5 /// <param name="str">原字符串</param> 6 /// <param name="len">截取字节长度</param> 7 /// <returns></returns> 8 public static string CutByteString(string str, int len) 9 { 10 string result = string.Empty;// 最终返回的结果 11 if (string.IsNullOrEmpty(str)) { return result; } 12 int byteLen = System.Text.Encoding.Default.GetByteCount(str);// 单字节字符长度 13 int charLen = str.Length;// 把字符平等对待时的字符串长度 14 int byteCount = 0;// 记录读取进度 15 int pos = 0;// 记录截取位置 16 if (byteLen > len) 17 { 18 for (int i = 0; i < charLen; i++) 19 { 20 if (Convert.ToInt32(str.ToCharArray()[i]) > 255)// 按中文字符计算加2 21 { byteCount += 2; } 22 else// 按英文字符计算加1 23 { byteCount += 1; } 24 if (byteCount > len)// 超出时只记下上一个有效位置 25 { 26 pos = i; 27 break; 28 } 29 else if (byteCount == len)// 记下当前位置 30 { 31 pos = i + 1; 32 break; 33 } 34 } 35 if (pos >= 0) 36 { result = str.Substring(0, pos); } 37 } 38 else 39 { result = str; } 40 return result; 41 } 42 #endregion
相关文章: