在我写代码的过程中, 碰到要在原字符串中截取指定长度的字符串. 我们通常使用string.Substring(), 但使用这个有一点问题就是中文字符和英文字符都认为点一个长度. 因为这样, 所以有时候我们要取的并不是我们想要的. 在网上找了一下, 没找到.于是自己写了一个.如果有错误的地方请大家指正.谢谢! private static string SubString( string stringToSub, int length) { Regex regex = new Regex("[\u4e00-\u9fa5]+", RegexOptions.Compiled); char[] stringChar = stringToSub.ToCharArray(); StringBuilder sb = new StringBuilder(); int nLength = 0; for(int i = 0; i < stringChar.Length; i++) { if (regex.IsMatch((stringChar[i]).ToString())) { sb.Append(stringChar[i]); nLength += 2; } else { sb.Append(stringChar[i]); nLength = nLength + 1; } if (nLength > length) break; } return sb.ToString(); } 转载于:https://www.cnblogs.com/XiaoHui/archive/2004/10/23/55868.html