using System.Text.RegularExpressions;
using System.Collections.Generic;
public static void Main()
var ex = "Go! Do that thing that you do so well, but go now...";
Console.WriteLine("--------");
private static void T1(string str)
var input = Regex.Replace(str, "[^0-9a-zA-Z]+", " ").ToLowerInvariant();
var palavras = input.Split(" ", StringSplitOptions.RemoveEmptyEntries);
foreach (var grouping in palavras.GroupBy(x => x))
Console.WriteLine($"{grouping.Key} : {grouping.Count()}");
private static void T2(string str)
var input = Regex.Replace(str, "[^0-9a-zA-Z]+", " ").ToLowerInvariant();
var palavras = input.Split(" ", StringSplitOptions.RemoveEmptyEntries);
var dicCounts = new Dictionary<string, int>();
foreach (var palavra in palavras)
dicCounts.TryGetValue(palavra, out var count);
dicCounts[palavra] = ++count;
foreach (var kvp in dicCounts)
Console.WriteLine($"{kvp.Key} : {kvp.Value}");