zoukankan      html  css  js  c++  java
  • C#判断中文字符 收藏

    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

  • 相关阅读:
    DB2 9 使用斥地(733 考试)认证指南,第 5 局部: CLI/ODBC 编程(3)
    DB2 9 操作开发(733 测验)认证指南,第 8 部分: 初级编程(5)
    DB2 9 哄骗开辟(733 测验)认证指南,第 5 部门: CLI/ODBC 编程(4)
    DB2 9 运用斥地(733 检验)认证指南,第 7 部分: Java 编程(4)
    DB2 9 使用开发(733 检验)认证指南,第 5 部门: CLI/ODBC 编程(5)
    DB2 9 运用斥地(733 考试)认证指南,第 7 局部: Java 编程(1)
    DB2 9 运用启示(733 考试)认证指南,第 8 部门: 低级编程(2)
    DB2 9 哄骗开荒(733 考试)认证指南,第 8 局部: 低级编程(7)
    DB2 9 利用斥地(733 考试)认证指南,第 6 部门: .NET 编程(6)
    DB2 9 哄骗开发(733 考试)认证指南,第 5 局部: CLI/ODBC 编程(6)
  • 原文地址:https://www.cnblogs.com/wuhenke/p/1655608.html
Copyright © 2011-2022 走看看