无痕客

落花无情,流水无痕……

  博客园 :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::

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;  
 
        }  
 
    }  
 


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

posted on 2010-01-25 10:15  无痕客  阅读(504)  评论(0编辑  收藏  举报