在当前一个项目中,需要计算字符串的长度,并将固定长度字符截下来,其中汉字要按2个字符计算,数字与字母按1个字符计算,没有找到现成的函数可以使用,参考 如何得到一个汉字和字母组合的字符串的准确的长度(asp.net 版本的) http://www.webjx.com/htmldata/2005-10-20/1129777793.html
参考写了以下两个函数,主要功能为按指定长度取copy字符串,取代substring的功能吧。
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.Substring(0, end);
string temp2 = aOrgStr.Remove(0,end);
aAfterStr = temp2 ;
return temp ;
}
运行结果 :
str = MutiSubString("abc汉字字符", 5 , aAfterStr)
str = "abc汉"
aAfterStr ="字字符"
已了却一直以来使用 str.Length 把汉字当一个字符来用的毛病