C#截取字符串长度方法
方法一、
/// <summary> /// 截取指定长度的字符串 /// </summary> /// <param name="str">要截取的字符串</param> /// <param name="len">要截取的长度</param> /// <param name="flag">截取后是否加省略号(true加,false不加)</param> /// <returns></returns> public static string CutString(string str, int len, bool flag) { string _outString = ""; int _len = 0; for (int i = 0; i < str.Length; i++) { if (Char.ConvertToUtf32(str, i) >= Convert.ToInt32("4e00", 16) && Char.ConvertToUtf32(str, i) <= Convert.ToInt32("9fff", 16)) { _len += 2; if (_len > len)//截取的长度若是最后一个占两个字节,则不截取 { break; } } else { _len++; } try { _outString += str.Substring(i, 1); } catch { break; } if (_len >= len) { break; } } if (str != _outString && flag == true)//判断是否添加省略号 { _outString += "..."; } return _outString; }
方法二、
/// <summary> /// 截取指定长度的字符串 /// </summary> /// <param name="str">要截取的字符串</param> /// <param name="len">要截取的长度</param> /// <param name="flag">截取后是否加省略号(true加,false不加)</param> /// <returns></returns> public static string CutString(string str, int len, bool flag) { System.Text.ASCIIEncoding ascii = new System.Text.ASCIIEncoding(); byte[] bts = ascii.GetBytes(str); int _len = 0; string _outString = ""; for (int i = 0; i < bts.Length; i++) { if ((int)bts[i] == 63)//两个字符 { len += 2; if (_len > len)//截取的长度若是最后一个占两个字节,则不截取 { break; } } else { len += 1; } try { _outString += str.Substring(i, 1); } catch { break; } if (_len >= len) { break; } } if (str != _outString && flag == true)//判断是否添加省略号 { _outString += "..."; } return _outString; }
方法三、
/// <summary> /// 截取指定长度的字符串 /// </summary> /// <param name="str">要截取的字符串</param> /// <param name="len">要截取的长度</param> /// <param name="flag">截取后是否加省略号(true加,false不加)</param> /// <returns></returns> public static string CutString(string str, int len, bool flag) { if (str == null || str.Length == 0 || len <= 0) { return string.Empty; } int l = str.Length; #region 计算长度 int clen = 0; while (clen < len && clen < l) { //每遇到一个中文,则将目标长度减一。 if ((int)str[clen] > 128) { len--; } clen++; } #endregion if (clen < l) { return flag ? str.Substring(0, clen) + "..." : str.Substring(0, clen); } else { return str; } }
作者:ゞ修ζ止符℡_R
出处:http://www.cnblogs.com/lollipop/
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,如有问题,可以通过394406480@qq.com 联系我,非常感谢。