/// <summary> /// 截取包含中文、英文、中英文混合字符的字符串 /// </summary> /// <param name="s"></param> /// <param name="length"></param> /// <returns></returns> public static String Substring(this string s, int length) { if (s.GetLength() > length) { if (s == null || s.Length == 0 || length <= 0) { return string.Empty; } int l = s.Length; #region 计算长度 int clen = 0; while (clen < length && clen < l) { //每遇到一个中文,则将目标长度减一。 if ((int)s[clen] > 128) { length--; } clen++; } #endregion if (clen < l) { return s.Substring(0, clen) + "..."; } else { return s; } } else { return s; } } /// <summary> /// 获取中文、英文、中英文混合字符串长度 /// </summary> /// <param name="strSource"></param> /// <returns></returns> public static int GetLength(this string strSource) { return Encoding.GetEncoding("GB18030").GetBytes(strSource).Length; }