1 public static string SubstringByCN(string strInput, int begin, int length) 2 { 3 if (!Regex.IsMatch(strInput, "[u4E00-u9FA5uF900-uFA2D]", RegexOptions.IgnoreCase)) 4 { 5 if (strInput.Length < length) 6 return strInput; 7 else 8 return strInput.Substring(0, length); 9 } 10 else 11 { 12 string checkstr = Regex.Replace(strInput, "[u4E00-u9FA5uF900-uFA2D]", "**", RegexOptions.IgnoreCase); 13 if (checkstr.Length < length) 14 return strInput; 15 else 16 { 17 string strOut = ""; 18 int strLength = 0; 19 for (int i = 0; i < strInput.Length; i++) 20 { 21 if (strLength >= length) 22 break; 23 strOut += strInput.Substring(i, 1); 24 if (!Regex.IsMatch(strInput.Substring(i, 1), "[u4E00-u9FA5uF900-uFA2D]", RegexOptions.IgnoreCase)) 25 strLength += 1; 26 else 27 strLength += 2; 28 } 29 return strOut; 30 } 31 } 32 }