c sample code of byte count method for getting string width

  • 2020-06-03 08:08:33
  • OfStack


/**////  ///   ///  ///  ///  ///  
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;
}


Related articles: