C# 漢字當2個字元計算

來源:互聯網
上載者:User

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

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.