Para verificar si el valor de la cadena tiene un valor numérico o no en C #

StackOverflow https://stackoverflow.com/questions/268120

  •  06-07-2019
  •  | 
  •  

Pregunta

Tengo una cadena como esta

string str = " dfdsfdsf8fdfdfd9dfdfd4 "

Necesito verificar si la cadena contiene un número recorriendo la matriz.

¿Fue útil?

Solución

¿Qué pasa con una expresión regular:

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

Otros consejos

Si está buscando un valor entero, puede 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 un número decimal, reemplace int. TryParse con Decimal. TryParse . Echa un vistazo a esta publicación de blog y comenta " Por qué deberías usar TryParse () en C # " para más detalles.

Si necesita números decimales, también puede usar esta expresión regular:

return System.Text.RegularExpressions.Regex.IsMatch(
   TextValue, @"^-?\d+([\.]{1}\d*)?
Microsoft.VisualBasic.Information.IsNumeric("abc"); 
quot;);

Y finalmente otra alternativa (si no está religiosamente contra VB.NET ), puede usar el método en el espacio de nombres Microsoft.VisualBasic:

<*>

Si vas a recorrer la cadena, NO uses int. TryParse ... eso es demasiado pesado. En su lugar, use char.IsNumber ();

ejemplo:

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

La combinación de partes de respuestas Kamals y respuestas Tristars dan ...

str.Any(char.IsNumber)

que creo que es la forma más sucinta y legible, en lugar de una expresión regular

Si eres un adicto a linq como yo, lo harías de esta manera

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

en C # 2.0, intente esto:

        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 bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top