在当前一个项目中,需要计算字符串的长度,并将固定长度字符截下来,其中汉字要按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 把汉字当一个字符来用的毛病