1 public static string SubstringByCN(string strInput, int begin, int length)
2 {
3 if (!Regex.IsMatch(strInput, "[\u4E00-\u9FA5\uF900-\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-\u9FA5\uF900-\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-\u9FA5\uF900-\uFA2D]", RegexOptions.IgnoreCase))
25 strLength += 1;
26 else
27 strLength += 2;
28 }
29 return strOut;
30 }
31 }
32 }