C#的一个很简单的问题。。请高手帮忙。小弟无尽感激(14)--字符中的汉字个数的统计

来源:百度知道 编辑:UC知道 时间:2024/05/25 11:14:34
高手们,如下 是一个字符中汉字个数的统计方法。。。如果输入:mingri明日keji科技。。。即输出:汉字个数4个。。。
这些代码是今天在图书馆看到的,但是小弟,看不明,如下的代码。。。请高手,详细详细解说给小弟听。。小弟无尽感激

public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}

private void button1_Click(object sender, EventArgs e)
{
ArrayList itemList = new ArrayList();
CharEnumerator CEnumerator = textBox1.Text.GetEnumerator();
Regex regex = new Regex("^[\u4E00-\u9FA5]{0,}$");
while (CEnumerator.MoveNext())
{
if(regex.IsMatch(CEnumerator.Current.ToString(),0))
itemList.Add(CEnumerator.Current.ToString());
textBox2.Text = itemList.Count.ToString();
}
}
}
}

regx 是正则表达式类,此类专门用于字符串相关操作
\u4E00-\u9FA5是汉字的的16进制范围(Unicode编码)
CharEnumerator CEnumerator = textBox1.Text.GetEnumerator();
可以理解为将文本框的字符串逐个分开来存放到字符数组中
后面的循环是用数组中的每个字符和正则表达式匹配,如果匹配上(就是汉字),就把它添加到 另一个数组 itemslist
最后见此itemslist的长度
就得到了汉字的个数
textBox2.Text = itemList.Count.ToString();
这一句放到while循环外边 效率更高

public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();//初始化控件
}

private void button1_Click(object sender, EventArgs e)
{
ArrayList itemList = new ArrayList();//创建一个ArrayList集合
CharEnumerator CEnumerator = textBox1.Text.GetEnumerator();//利用枚举 获得每个值
Regex regex = new Regex("^[\u4E00-\u9FA5]{0,}$");//\u4E00-\u9FA5汉字的取值范围 {0,} 匹配0次到多次
while (CEnumerator.MoveNext())//当前是否存在值
{
if(regex.IsMatch