中英文截取长度
View Code
#region 中英文截取长度一致 //是否是中文 public static bool IsChinese(char c) { return (int)c >= 0x4E00 && (int)c <= 0x9FA5; } //获得字节长度 private static int getLengthb(string str) { return System.Text.Encoding.Default.GetByteCount(str); } //c#的中英文混合字符串截取指定长度,startidx从0开始 by gisoracle@126.com public static string getStrLen(string str, int startidx, int len) { int Lengthb = getLengthb(str); if (startidx + 1 > Lengthb) { return ""; } int j = 0; int l = 0; int strw = 0;//字符的宽度 bool b = false; string rstr = ""; for (int i = 0; i < str.Length; i++) { char c = str[i]; if (j >= startidx) { rstr = rstr + c; b = true; } if (IsChinese(c)) { strw = 2; } else { strw = 1; } j = j + strw; if (b) { l = l + strw; if ((l + 1) >= len) break; } } return rstr; } #endregion
道之所在,虽千万人吾往矣