中英混排做字符串精确截取

   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;

        }

 

你可能感兴趣的:(字符串)