C#判断中文字符 收藏

it2024-11-15  9

C#判断中文字符 收藏 方法一: 在unicode 字符串中,中文的范围是在4E00..9FFF:CJK Unified Ideographs。 通过对字符的unicode编码进行判断来确定字符是否为中文。 程序代码

view plaincopy to clipboardprint?<PRE class=csharp name="code">protected bool   IsChineseLetter(string input,int index)     {              int code = 0;              int chfrom = Convert.ToInt32("4e00", 16);     //范围(0x4e00~0x9fff)转换成int(chfrom~chend)              int chend = Convert.ToInt32("9fff", 16);                  if (input != "")              {                  code = Char.ConvertToUtf32(input, index);     //获得字符串input中指定索引index处字符unicode编码                  if (code >= chfrom && code <= chend)                       {                      return true;     //当code在中文范围内返回true                  }                  else                 {                      return false ;     //当code不在中文范围内返回false                  }                  }               return false;     }</PRE> 

view plaincopy to clipboardprint?protected bool   IsChineseLetter(string input,int index)     {              int code = 0;              int chfrom = Convert.ToInt32("4e00", 16);     //范围(0x4e00~0x9fff)转换成int(chfrom~chend)              int chend = Convert.ToInt32("9fff", 16);                  if (input != "")              {                  code = Char.ConvertToUtf32(input, index);     //获得字符串input中指定索引index处字符unicode编码                  if (code >= chfrom && code <= chend)                       {                      return true;     //当code在中文范围内返回true                  }                  else                 {                      return false ;     //当code不在中文范围内返回false                  }                  }               return false;     }  protected bool   IsChineseLetter(string input,int index)

{

         int code = 0;

         int chfrom = Convert.ToInt32("4e00", 16);     //范围(0x4e00~0x9fff)转换成int(chfrom~chend)

         int chend = Convert.ToInt32("9fff", 16);

 

         if (input != "")

         {

             code = Char.ConvertToUtf32(input, index);     //获得字符串input中指定索引index处字符unicode编码

             if (code >= chfrom && code <= chend)    

             {

                 return true;     //当code在中文范围内返回true

             }

             else

             {

                 return false ;     //当code不在中文范围内返回false

             }

 

         }

          return false;

}方法二: 程序代码

view plaincopy to clipboardprint?public bool IsChina(string CString)     {         bool BoolValue = false;         for (int i = 0; i < CString.Length; i++)         {             if (Convert.ToInt32(Convert.ToChar(CString.Substring(i, 1))) < Convert.ToInt32(Convert.ToChar(128)))             {                 BoolValue = false;             }             else            {                 return BoolValue = true;             }         }         return BoolValue;     } 

           public bool IsChina(string CString)

           {

               bool BoolValue = false;

               for (int i = 0; i < CString.Length; i++)

               {

                   if (Convert.ToInt32(Convert.ToChar(CString.Substring(i, 1))) < Convert.ToInt32(Convert.ToChar(128)))

                   {

                       BoolValue = false;

                   }

                   else

                   {

                       return BoolValue = true;

                   }

               }

               return BoolValue;

           } 方法三: 程序代码      view plaincopy to clipboardprint?          /// <summary>            /// 判断句子中是否含有中文            /// </summary>            /// <param >字符串</param>            public bool WordsIScn(string words)            {                string TmmP;                  for (int i = 0; i < words.Length; i++)                {                    TmmP = words.Substring(i, 1);                      byte[] sarr = System.Text.Encoding.GetEncoding("gb2312").GetBytes(TmmP);                      if (sarr.Length == 2)                    {                        return true;                    }                }                return false;            } 

          /// <summary>         /// 判断句子中是否含有中文         /// </summary>         /// <param >字符串</param>         public bool WordsIScn(string words)         {             string TmmP;

             for (int i = 0; i < words.Length; i++)             {                 TmmP = words.Substring(i, 1);

                 byte[] sarr = System.Text.Encoding.GetEncoding("gb2312").GetBytes(TmmP);

                 if (sarr.Length == 2)                 {                     return true;                 }             }             return false;         }view plaincopy to clipboardprint?<STRONG>方法四:</STRONG> 程序代码 

方法四: 程序代码view plaincopy to clipboardprint?<PRE class=csharp name="code">for (int i=0; i<s.length; i++)     {         Regex rx = new Regex("^[\u4e00-\u9fa5]___FCKpd___4quot;);         if (rx.IsMatch(s[i]))             // 是         else           // 否     }</PRE> 

view plaincopy to clipboardprint?for (int i=0; i<s.length; i++)     {         Regex rx = new Regex("^[\u4e00-\u9fa5]___FCKpd___4quot;);         if (rx.IsMatch(s[i]))             // 是         else           // 否     }  for (int i=0; i<s.length; i++)

{

    Regex rx = new Regex("^[\u4e00-\u9fa5]___FCKpd___4quot;);

    if (rx.IsMatch(s[i]))

        // 是

    else

       // 否

} \u4e00-\u9fa5 汉字的范围。 ^[\u4e00-\u9fa5]$ 汉字的范围的正则同理可以判断日文: \u0x3040-\u0x309F 是平假名, \u0x30A0-\u0x30FF 是片假名方法五: 程序代码

view plaincopy to clipboardprint?unicodeencoding   unicodeencoding   =   new   unicodeencoding();       byte   []   unicodebytearray   =   unicodeencoding.getbytes(   inputstring   );       for(   int   i   =   0;   i   <   unicodebytearray.length;   i++   )       {       i++;       //如果是中文字符那么高位不为0       if   (   unicodebytearray[i]   !=   0   )       {       }       ……   

   unicodeencoding   unicodeencoding   =   new   unicodeencoding(); 

   byte   []   unicodebytearray   =   unicodeencoding.getbytes(   inputstring   ); 

   for(   int   i   =   0;   i   <   unicodebytearray.length;   i++   ) 

   { 

   i++; 

   //如果是中文字符那么高位不为0 

   if   (   unicodebytearray[i]   !=   0   ) 

   { 

   } 

   ……  方法六: 程序代码

view plaincopy to clipboardprint?/// <summary>     /// 给定一个字符串,判断其是否只包含有汉字     /// </summary>     /// <param name="testStr"></param>     /// <returns></returns>     public bool IsOnlyContainsChinese(string testStr)     {         char[] words = testStr.ToCharArray();         foreach (char word in words)         {             if ( IsGBCode(word.ToString()) || IsGBKCode(word.ToString()) )   // it is a GB2312 or GBK chinese word             {                 continue;             }             else            {                 return false;             }         }         return true;     }         /// <summary>     /// 判断一个word是否为GB2312编码的汉字     /// </summary>     /// <param name="word"></param>     /// <returns></returns>     private bool IsGBCode(string word)     {         byte[] bytes = Encoding.GetEncoding("GB2312").GetBytes(word);         if (bytes.Length <= 1)   // if there is only one byte, it is ASCII code or other code         {             return false;         }         else        {             byte byte1 = bytes[0];             byte byte2 = bytes[1];             if (byte1 >= 176 && byte1 <= 247 && byte2 >= 160 && byte2 <= 254)     //判断是否是GB2312             {                 return true;             }             else            {                 return false;             }         }     }         /// <summary>     /// 判断一个word是否为GBK编码的汉字     /// </summary>     /// <param name="word"></param>     /// <returns></returns>     private bool IsGBKCode(string word)     {         byte[] bytes = Encoding.GetEncoding("GBK").GetBytes(word.ToString());         if (bytes.Length <= 1)   // if there is only one byte, it is ASCII code         {             return false;         }         else        {             byte byte1 = bytes[0];             byte byte2 = bytes[1];             if ( byte1 >= 129 && byte1 <= 254 && byte2 >= 64 && byte2 <= 254)     //判断是否是GBK编码             {                 return true;             }             else            {                 return false;             }         }     }                 /// <summary>     /// 判断一个word是否为Big5编码的汉字     /// </summary>     /// <param name="word"></param>     /// <returns></returns>     private bool IsBig5Code(string word)     {         byte[] bytes = Encoding.GetEncoding("Big5").GetBytes(word.ToString());         if (bytes.Length <= 1)   // if there is only one byte, it is ASCII code         {             return false;         }         else        {             byte byte1 = bytes[0];             byte byte2 = bytes[1];             if ( (byte1 >= 129 && byte1 <= 254) && ((byte2 >= 64 && byte2 <= 126) || (byte2 >= 161 && byte2 <= 254)) )     //判断是否是Big5编码             {                 return true;             }             else            {                 return false;             }         }     } 

本文来自博客,转载请标明出处:http://blog.csdn.net/yur505/archive/2008/06/17/2557211.aspx

转载于:https://www.cnblogs.com/wuhenke/archive/2010/01/25/1655608.html

最新回复(0)