c#中判断一个字符是否为汉字的方式有三种:
(1) 利用ASCII码进行判断。ASCII码中值大于127的则为汉字;
(2) 利用汉字的Unicode编码范围进行判断,汉字的 UNICODE 编码范围是4e00-9fbb;
(3) 根据正则表达式进行判断,正则表达式为"^[\u4e00-\u9fa5]{0,}$"。
三种判断方式的代码如下(获得字符串中汉字字符的个数):
1. 利用ASCII码进行判断
int IsChineseChar(string str)
{
int count = 0;
foreach(char ch in str)
{
if((int)ch > 127) //判断字符ch是不是汉字
count++;
}
return count;
}
2. 利用unicode编码进行判断
int IsChineseChar(string str)
{
int count = 0;
foreach(char ch in str)
{
if(ch>=0x4e00 && ch<=0x9fbb) //判断字符ch是否为汉字字符
count++;
}
return count;
}
3. 利用正则表达式进行判断
int CountChineseChar(string str)
{
int count = 0;
Regex p_regex = new Regex("^[\u4e00-\u9fa5]{0,}$");
for(char ch in str)
{
//判断字符是否为汉字字符
count = p_regex.IsMatch(ch.ToString())? ++count:count;
}
return count;
}