Оптимизация кода несложной задачи (Статистика всех введённых символов в строке) - C#
Формулировка задачи:
Решение задачки(статистика всех введённых символов в строке) мне кажется слишком громоздким и просто деревянным, можно ли как то его оптимизировать и не использовать такое количество переменных.
class Program
{
static string Str(string str)
{
str = Console.ReadLine();
string str2 = string.Empty;
string str3 = string.Empty;
string str4 = string.Empty;
string str5 = string.Empty;
string str6 = string.Empty;
string str7 = string.Empty;
foreach (char ch in str.ToCharArray())
{
if (char.IsDigit(ch))
{
str2 += ch.ToString();
}
if (char.IsLetter(ch))
{
str3 += ch.ToString();
}
if (char.IsWhiteSpace(ch))
{
{
str5 += ch.ToString();
}
}
if (char.IsPunctuation(ch))
str4 += ch.ToString();
if (char.IsUpper(ch))
{
str6 += ch.ToString();
}
if (char.IsLower(ch))
{
str7 += ch.ToString();
}
}
Console.WriteLine("\nsymbols\t: " + str.Length + "\ndigits\t: " + str2.Length + "\nletters\t: " + str3.Length +
"\nPunct\t: " + str4.Length + "\nSpases\t: " + str5.Length + "\nUpper\t: " + str6.Length
+ "\nLower\t: " + str7.Length);
return str;
}
static void Print(string str)
{
Console.WriteLine(str);
}
static void Main(string[] args)
{
string str1=string.Empty;
Str(str1);
//Print(str1);
}
}Решение задачи: «Оптимизация кода несложной задачи (Статистика всех введённых символов в строке)»
textual
Листинг программы
class Program
{
static void Main(string[] args)
{
printStringInfo(Console.ReadLine());
Console.ReadKey();
}
static void printStringInfo(string str)
{
Console.WriteLine("symbols\t: " + str.Length);
Console.WriteLine("digits\t: " + str.Where(mc => char.IsDigit(mc)).Count());
Console.WriteLine("letters\t: " + str.Where(mc => char.IsLetter(mc)).Count());
Console.WriteLine("puncts\t: " + str.Where(mc => char.IsPunctuation(mc)).Count());
Console.WriteLine("spases\t: " + str.Where(mc => char.IsWhiteSpace(mc)).Count());
Console.WriteLine("uppers\t: " + str.Where(mc => char.IsUpper(mc)).Count());
Console.WriteLine("lowers\t: " + str.Where(mc => char.IsLower(mc)).Count());
}
}