在當前一個項目中,需要計算字符串的長度,並將固定長度字符截下來,其中漢字要按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 把漢字當一個字符來用的毛病