程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> C# >> 關於C# >> C#中漢字當2個字符計算

C#中漢字當2個字符計算

編輯:關於C#

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

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved