Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /*
- 方法一:
- */
- 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;
- }
- /*
- 方法二:
- */
- 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
- {
- BoolValue = true;
- }
- }
- return BoolValue;
- }
- /*
- 方法三:
- */
- /// <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;
- }
- /*
- 方法四:
- */
- for (int i=0; i<s.length; i++)
- {
- Regex rx = new Regex("^[\u4e00-\u9fa5]$");
- if (rx.IsMatch(s[i]))
- // 是
- else
- // 否
- }
- // 正解!
- // \u4e00-\u9fa5 漢字的範圍.
- // ^[\u4e00-\u9fa5]$ 漢字的範圍的正則
- /*
- 方法五:
- */
- unicodeencoding unicodeencoding = new unicodeencoding();
- byte [] unicodebytearray = unicodeencoding.getbytes( inputstring );
- for( int i = 0; i < unicodebytearray.length; i++ )
- {
- i++;
- // 如果是中文字符那麼高位不為0
- if ( unicodebytearray[i] != 0 )
- {
- }
- }
- /*
- 方法六:
- */
- /// <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];
- // 判斷是否是Big5編碼
- if ( (byte1 >= 129 && byte1 <= 254) && ((byte2 >= 64 && byte2 <= 126) || (byte2 >= 161 && byte2 <= 254)) )
- {
- return true;
- }
- else
- {
- return false;
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement