中英混排做字符串精确截取
private ArrayList GetSeparateSubString(string mOrigianlString, int subStringCharNumber) { ArrayList resultList = new ArrayList(); string tempStr = mOrigianlString; int charNumber = subStringCharNumber; int totalCount = 0; string mSubStr = ""; for (int i = 0; i < tempStr.Length; i++) { string mChar = tempStr.Substring(i, 1); int byteCount = Encoding.Default.GetByteCount(mChar); //关键点判断字符所占的字节数 if (byteCount == 1) { totalCount++; mSubStr += mChar; if (totalCount == charNumber || i == tempStr.Length - 1) { resultList.Add(mSubStr); totalCount = 0; mSubStr = ""; } } else if (byteCount > 1) { totalCount += 2; if (totalCount > charNumber) { resultList.Add(mSubStr); if (i == tempStr.Length - 1) { mSubStr = mChar; resultList.Add(mSubStr); } else { totalCount = 2; mSubStr = mChar; } } else if (totalCount == charNumber) { mSubStr += mChar; resultList.Add(mSubStr); totalCount = 0; mSubStr = ""; } else if (i == tempStr.Length - 1) { mSubStr += mChar; resultList.Add(mSubStr); } else { mSubStr += mChar; } } } return resultList; }