c# 截取字符串,多于这个长度自动换行
public bool IsChinese(char chr) { bool isChinese = false; //if ((int)str[i] > 127)//判断是否是汉字 if ((int)chr > 0x4E00 && (int)chr < 0x9FA5) { isChinese = true; } else { isChinese = false; ; } return isChinese; } /// <summary> /// 截取字符串,不限制字符串长度 /// </summary> /// <param name="str">待截取的字符串</param> /// <param name="len">每行的长度,多于这个长度自动换行</param> /// <returns></returns> public string CutStr(string str, int len) { //设备完善的灌溉机井2条,泵站1条,排水沟\r\n1条,灌溉机井1个,排水沟1个,出水孔1个,\r\n闸1个 //正常情况下,我们是直接去string的length的,但是汉字是有两个字节的 StringBuilder sb = new StringBuilder(); int count = 0;//统计个数 for (int i = 0; i < str.Length; i++) { char chr = str[i]; if (IsChinese(chr)) { count += 2; } else { count += 1; } if (count == len) { sb.Append(chr + "\r\n"); count = 0; } else if (count > len) { sb.Append("\r\n" + chr); if (IsChinese(chr)) { count = 2; } else { count = 1; } } else { sb.Append(chr); } } return sb.ToString(); } /// <summary> /// 截取字符串,不限制字符串长度 /// </summary> /// <param name="str">待截取的字符串</param> /// <param name="len">每行的长度,多于这个长度自动换行</param> /// <returns></returns> public string CutStr2(string str, int len) { //汉字和数字都当做一个个字节 string result = string.Empty; int strLenth = System.Text.Encoding.Default.GetByteCount(str); for (int i = 0; i < strLenth; i++) { int r = i % len; int last = (str.Length / len) * len; if (i != 0 && i <= last) { if (r == 0) //换行 { result += str.Substring(i - len, len) + "\r\n"; } } else if (i > last) { result += str.Substring(i - 1); break; } } return result; }