Если я не хочу использовать RegEx и просто предоставить альтернативное решение, вы можете просто проверить ASCII-код каждого символа и, если он находится между этим диапазоном, это будет либо английская буква, либо число не лучшее решение):
foreach (char ch in str.ToCharArray())
{
int x = (int)char;
if (x >= 63 and x <= 126)
{
//this is english letter, i.e.- A, B, C, a, b, c...
}
else if(x >= 48 and x <= 57)
{
//this is number
}
else
{
//this is something diffrent
}
}
http://en.wikipedia.org/wiki/ASCII для полной таблицы ASCII.
Но я все еще думаю, что RegEx - лучшее решение.