Retornando somente números de uma string.

Postado em 04. ago, 2011 por in Tudo sobre Tecnologia

Bom pessoal, existem várias maneiras de fazer isso, lógico, assim como tudo. Essa função é interessante pois retorna todos os números da string desejada.

Declaração:

public static int RemoveLetras(string valorInicial)
{
string tmp = string.Empty;
int number = 0;
int retorno = 0;

string[] digits = Regex.Split(valorInicial, @"\D+");

foreach (string value in digits)
{
if (int.TryParse(value, out number))
{
tmp += value;
}
}

if (!String.IsNullOrEmpty(tmp))
{
int.TryParse(tmp, out retorno);
}

return retorno;
}

Utilização:


int tmp = 0;

tmp = RemoveLetras("123abc456def789");

Uma outra maneira de fazer isso utilizando Expressão Regular seria assim:


int tmp = 0;

tmp = Regex.Match("123abc456", @"\d+").Value;

Ponto negativo: Só retorna o primeiro conjunto de inteiros. Exemplo: Se você passar “123abc456″ na string, só retornará “123″.

Até a próxima!

 

Tags: ,

Um Comentário

Diego Pimenta

15. ago, 2011

Grande Jonatas, boa dica cara.
Pode utilizar a função da classe de String para concatenar o retorno do array pela expressão regular.
Ex:
string.Join(null, System.Text.RegularExpressions.Regex.Split(expr, “[^\\d]“))

Deixe um comentário

You must be logged in to post a comment.