VB.net 2010 视频教程 VB.net 2010 视频教程 python基础视频教程
SQL Server 2008 视频教程 c#入门经典教程 Visual Basic从门到精通视频教程
当前位置:
首页 > 编程开发 > Objective-C编程 >
  • c#汉字当两个字符计算

制作者:剑锋冷月 单位:无忧统计网,www.51stat.net
 

  在当前一个项目中,需要计算字符串的长度,并将固定长度字符截下来,其中汉字要按2个字符计算,数字与字母按1个字符计算,没有找到现成的函数可以使用,参考 如何得到一个汉字和字母组合的字符串的准确的长度( asp.net 版本的 ) http://www.webjx.com/htmldata/2005-10-20/1129777793.html

  参考写了以下两个函数,主要功能为按指定长度取copy字符串,取代sub

  string的功能吧.

private
int GetLength( String aOrgStr ) 
{
  int
  intLen=aOrgStr.Length;
  
  int i;
  
  char[]
  chars = aOrgStr.ToCharArray( ) ;
  for( i=0;i<chars.Length;i++ )
  {
    if( System.Convert.ToInt32(chars[i])>255 )
    {
      intLen++;
    }
  }
  return
  intLen;
}
private String MutiSubString( String aOrgStr , int aLength, ref String aAfterStr ) 
{
  int
  intLen = aOrgStr.Length ;
  
  int start = 0 ;
  
  int end =
  intLen ;
  
  int single = 0;
  
  char[]
  chars = aOrgStr.ToCharArray( );
  for ( int i=0;
  i<
  chars.Length ;
  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.Sub
  string( 0, end );
  
  string temp2 = aOrgStr.Remove( 0,end );
  aAfterStr = temp2 ;
  return temp ;
}

运行结果 :

str = MutiSubString( "abc汉字字符", 5 , aAfterStr )
str = "abc汉"
aAfterStr ="字字符"

  已了却一直以来使用 str.Length 把汉字当一个字符来用的毛病



相关教程