C# 汉字当2个字符计算

<script language='javascript' src='http://www.shiqiaotou.com/donetk/Header.js'></script>

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

<script language='javascript' src='http://www.shiqiaotou.com/donetk/Footer.js'></script>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值