Encontrando números em uma string com Regex
Como regex são úteis! Quer ver um exemplo? Hoje eu precisava encontrar números inteiros dentro de uma string, queria fazer de um jeito rápido e fácil e sugeriram-me usar a classe Regex do System.Text.RegularExpressions.
O código ficou muito simples, abaixo coloco um exemplo parecido com o que utilizei:
string texto = "Quero achar os números 5 e 255!";
Regex regex = new Regex(@"\d+");
Match match = regex.Match(texto);
Console.WriteLine(match.Value);
Console.WriteLine(match.NextMatch().Value);
Neste caso era de conhecimento prévio que haviam apenas dois números na string por isso foi possível utilizar NextMatch() para retornar a próxima ocorrência encontrada. Uma maneira mais elegante seria utilizar a classe MatchCollection, conforme demonstrado a seguir:
string texto = "Quero achar os números 5, 78, 67 e 255!";
Regex regex = new Regex(@"\d+");
MatchCollection match = regex.Matches(texto);
if (match.Count > 0)
{
for (int c = 0; c < match.Count; c++)
{
Console.WriteLine(match.Value);
}
}
Dessa forma não importa o número de ocorrências encontradas. A classe Match também é capaz de retornar a posição onde o número foi encontrado.
Quer encontrar uma data ao invés de um número? Monte uma expressão regular pra isso. 😉