Pergunta

Estou tendo uma corda como essa

String str = "dfdsfdf8fdfdfd9dfdfd4"

Preciso verificar se a string contém o número percorrendo a matriz.

Foi útil?

Solução

Que tal uma expressão regular:

bool val = System.Text.RegularExpressions.Regex.IsMatch(str, @"\d");

Outras dicas

Se você está procurando um valor inteiro, você pode usar Int.TryParse:

int result;
if (int.TryParse("123", out result))
{
    Debug.WriteLine("Valid integer: " + result);
}
else
{
    Debug.WriteLine("Not a valid integer");
}

Para verificar um número decimal, substitua o Int.TryParse por Decimal.TryParse. Confira esta postagem e comentários do blog "Por que você deve usar o TryParse () em C#" para detalhes.

Se você precisar de números decimais, alternativamente pode usar esta expressão regular:

return System.Text.RegularExpressions.Regex.IsMatch(
   TextValue, @"^-?\d+([\.]{1}\d*)?$");

E finalmente outra alternativa (se você não é religiosamente contra vb.net), você pode usar o método no espaço para nome Microsoft.VisualBasic:

Microsoft.VisualBasic.Information.IsNumeric("abc"); 

Se você vai dar um loop pela corda, não use o Int.TryParse ... isso é muito pesado. Em vez disso, use char.isNumber ();

exemplo:

foreach (char c in myString)
    if (char.IsNumber(c))
        return true;
str.ToCharArray().Any(x => char.IsNumber(x));

Combinando partes de Kamals Resposta e Tristars Respostas dão ...

str.Any(char.IsNumber)

que eu acho que é a maneira mais sucinta e legível, em vez de uma regex

Se você é um viciado em Linq como eu, você faria dessa maneira

string s = "abc1def2ghi";
bool HasNumber = (from a in s.ToCharArray() where a >= '0' && a <= '9' select a).Count() > 0;

Em C# 2.0, tente o seguinte:

        string str = "dfdsfdsf8fdfdfd9dfdfd4";

        for (int i = 0; i < str.Length; i++)
        {
            int result;
            if (int.TryParse(str[i].ToString(), out result))
            {
                //element is a number            
            }
            else
            {
                // not a number
            }
        }
str.ToCharArray().Any(char.IsNumber)
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top