统计英文字母、空格、数字和其它字符的个数

输入一行字符,分别统计出其中英文字母、空格、数字和其它字符的个数。
要求C#程序代码
static void Main(string[] args)
{
}
有几种方法可以选择,一个是循环,每个字数饥符去判断 ,还有一个是利用正则表达式.循环的效率不高,我给个用正则表达式的方法吧....
static void Main(string[] args)
{
string str =Console.ReadLine();
string numreg="[0-9]";//表示数字
string wordreg="[a-zA-Z]";//表示英文字符
string spacereg="\\s";//表示空格
string other="[^0-9a-zA-Z\\s]";//其它字符

System.Text.RegularExpressions.Regex reg = new System.Text.RegularExpressions.Regex(numreg);

Console.WriteLine("共有数字:" + reg.Matches(str,0).Count + "个");
reg = new System.Text.RegularExpressions.Regex(wordreg);
Console.WriteLine("共有英文字母:" + reg.Matches(str,0).Count + "个");
reg= new System.Text.RegularExpressions.Regex(spacereg);
Console.WriteLine("铅毕悄共有空格:" + reg.Matches(str,0).Count + "个");
reg= new System.Text.RegularExpressions.Regex(other);
Console.WriteLine("共有其他字符槐渣:" + reg.Matches(str,0).Count + "个");

}
static void Main(string[] args) {
int eN = 0;
int sN = 0;
int nN = 0;
int oN = 0;
Console.Write("字符串:");
string str = Console.ReadLine();
for (int i = 0; i < str.Length; i++) {
if ((str[i] > '盯兆a' && str[i] < 'z') || (str[i] > 'A' && str[i] < 'Z')) {
eN++;
} else if (str[i] == ' ') {
sN++;
} else if (str[i] > '0' && str[i] < '凯神租9') {
nN++;
} else {
oN++;
}
}
Console.WriteLine("英文:{0}", eN);
Console.WriteLine("空格:{0}", sN);
Console.WriteLine("数字:{0}", nN);
Console.WriteLine("其他:{0}"瞎孙, oN);
Console.ReadKey(true);
}