#region 函数:GetSubString() 作用:获取字符串中指定位置开始的指定长度的字符串,支持汉字英文混合 汉字为2字节计数 /// <summary> /// 获取字符串中指定位置开始的指定长度的字符串,支持汉字英文混合 汉字为2字节计数 /// </summary> /// <param name="strSub">输入中英混合字符串</param> /// <param name="start">开始截取的起始位置</param> /// <param name="length">要截取的字符串长度</param> /// <returns></returns> public static string GetSubString(string strSub, int start, int length) { string temp = strSub; int j = 0, k = 0, p = 0; CharEnumerator ce = temp.GetEnumerator(); while (ce.MoveNext()) { j += (ce.Current > 0 && ce.Current < 255) ? 1 : 2; if (j <= start) { p++; } else { if (j == GetLength(temp)) { temp = temp.Substring(p, k + 1); break; } if (j <= length + start) { k++; } else { temp = temp.Substring(p, k); break; } } } return temp; } /// <summary> /// 获取指定字符串长度,汉字以2字节计算 /// </summary> /// <param name="aOrgStr">要统计的字符串</param> /// <returns></returns> private static int GetLength(String aOrgStr) { int intLen = aOrgStr.Length; int i; char[] chars = aOrgStr.ToCharArray(); for (i = 0; i < chars.Length; i++) { if (System.Convert.ToInt32(chars[i]) > 255) { intLen++; } } return intLen; } #endregion