截取汉字英文长度

一个汉字当成两个字节编码,英文一个字母当成一个字节编码,截取字符串的长度.例如:字符串"微软技术c#讲座",

string sourcestr = "微软技术c#讲座";

string newstr = SubString(sourcestr,9);

//输出newstr = "微软技术c"


  public static string SubString(string aOrgStr,int aLength)
  {
   int intLen = aOrgStr.Length ;
   int start = 0 ;
   int end = intLen ;
   int single = 0;
   char[] chars = aOrgStr.ToCharArray();
   for (int i=0; i   {
    if (System.Convert.ToInt32(chars[i])>255)
    {

        //如果是汉字,那么就增加两个字节长度
     start += 2;
    }
    else
    {
       //如果是英文或数字,那么就增加一个字节长度    
       start += 1;
        single ++ ;
    }
    if (start >= aLength)
    {
      
     if ( end % 2 == 0)
     {
      if ( single % 2 == 0 )
      {
       end = i+1 ;
      }
      else
      {
       end = i ;
      }
     }
     else
     {
      end = i+1 ;
     }
     break ;
    }
   }
   string temp = aOrgStr.Substring(0, end);
   return temp ;
  }

 

posted @ 2016-05-17 10:29  lovemx  阅读(98)  评论(0)    收藏  举报