/// <summary> /// 截取字符串长度,中文默认2个字节 /// </summary> /// <param name="str">字符串</param> /// <param name="count">截取的长度</param> /// <param name="cLen">汉字长度</param> /// <returns>截取后的字符串</returns> /// <example> /// <code lang="c#"> /// <![CDATA[ /// string str1="a中国浙江".GetSubString(3); //返回 "a中"; /// string str2="a中国浙江".GetSubString(3,SingleChineseLen.ONE); //返回 "a中国" /// ]]> /// </code> /// </example> public static string GetSubString(this string str, int count, SingleChineseLen cLen = SingleChineseLen.TWO) { if (string.IsNullOrEmpty(str)) { return(string.Empty); } ASCIIEncoding En = new ASCIIEncoding(); Byte[] B = En.GetBytes(str); int len = 0; for (int i = 0; i < B.Length; i++) { if (B[i] == 63 && cLen == SingleChineseLen.TWO)//表示是中文 { len = len + 2; } else { len = len + 1; } if (len >= count) { return(str.Substring(0, i + 1)); } } return(str); }
/// <summary> /// 获取字符串的长度 /// </summary> /// <param name="str">字符串</param> /// <param name="cLen">汉字长度,默认一个汉字当2个字符处理</param> /// <returns>字符串长度</returns> /// <example> /// <code lang="c#"> /// <![CDATA[ /// int len1="a中国".GetStringLength(); //返回5; /// int len2="a中国".GetStringLength(SingleChineseLen.ONE); //返回3 /// ]]> /// </code> /// </example> public static int GetStringLength(this string str, SingleChineseLen cLen = SingleChineseLen.TWO) { if (string.IsNullOrEmpty(str)) { return(0); } int len = 0; if (!string.IsNullOrEmpty(str)) { ASCIIEncoding En = new ASCIIEncoding(); Byte[] B = En.GetBytes(str.Trim()); for (int i = 0; i < B.Length; i++) { if (B[i] == 63 && cLen == SingleChineseLen.TWO)//表示是中文 { len = len + 2; } else { len = len + 1; } } } return(len); }