webdn
 
  首页     免费截图     VIP会员区     广告Banner     技术文档     网站模板  
网站截图,网站每日新 !
虚拟主机
网页模板

首页 >> WebDN 文档 >> 网络编程 >> ASP.net 技术资料 >> Page 21 >> C# 汉字当2个字符计算

 

C# 汉字当2个字符计算

【摘 要】在实际工作应用中,很多的时候会出现这样的情况,由于我们对于汉字的特殊的要求,在计算字符个数的时候,由于是Unicode的原因,我们对于一个 汉字应该是按照两个字符计算。
  

  在当前一个项目中,需要计算字符串的长度,并将固定长度字符截下来,其中汉字要按2个字符计算,数字与字母按1个字符计算,没有找到现成的函数可以使用,参考如何得到一个汉字和字母组合的字符串的准确的长度

  参考写了以下两个函数,主要功能为按指定长度取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 把汉字当一个字符来用的毛病



电话咨询:010-60520722 QQ咨询:3792656   |   583696287   |   66733350 关于WebDN  |  站点地图  |  联系我们  |  支付方式  |  友情链接
© 2004-2008 WebDN.com 版权所有. 沪ICP备05040479号