Identificar si una cadena es un número

Resuelto Gold asked hace 15 años • 27 respuestas

Si tengo estas cadenas:

  1. "abc" = false

  2. "123" =true

  3. "ab2" =false

¿Existe algún comando, como IsNumeric()u otro, que pueda identificar si una cadena es un número válido?

Gold avatar May 22 '09 01:05 Gold
Aceptado
int n;
bool isNumeric = int.TryParse("123", out n);

Actualización a partir de C# 7:

var isNumeric = int.TryParse("123", out int n);

o si no necesita el número puede descartar el parámetro de salida

var isNumeric = int.TryParse("123", out _);

¡ Las var s pueden ser reemplazadas por sus respectivos tipos!

mqp avatar May 21 '2009 18:05 mqp

Esto devolverá verdadero si inputson todos números. No sé si es mejor que TryParse, pero funcionará.

Regex.IsMatch(input, @"^\d+$")

Si solo desea saber si tiene uno o más números mezclados con caracteres, omita ^ +y $.

Regex.IsMatch(input, @"\d")

Editar: En realidad, creo que es mejor que TryParse porque una cadena muy larga podría desbordar TryParse.

John M Gant avatar May 21 '2009 19:05 John M Gant

También puedes usar:

using System.Linq;

stringTest.All(char.IsDigit);

Volverá truepara todos los dígitos numéricos (no float) y falsesi la cadena de entrada es algún tipo de alfanumérico.

Caso de prueba Valor de retorno Resultado de la prueba
"1234" verdadero ✅Pase
"1" verdadero ✅Pase
"0" verdadero ✅Pase
"" verdadero ⚠️Falla (caso límite conocido)
"12.34" FALSO ✅Pase
"+1234" FALSO ✅Pase
"-13" FALSO ✅Pase
"3E14" FALSO ✅Pase
"0x10" FALSO ✅Pase

Tenga en cuenta : stringTestno debe ser una cadena vacía ya que pasaría la prueba de ser numérica.

Kunal Goel avatar Oct 20 '2014 12:10 Kunal Goel

He usado esta función varias veces:

public static bool IsNumeric(object Expression)
{
    double retNum;

    bool isNum = Double.TryParse(Convert.ToString(Expression), System.Globalization.NumberStyles.Any, System.Globalization.NumberFormatInfo.InvariantInfo, out retNum);
    return isNum;
}

Pero también puedes usar;

bool b1 = Microsoft.VisualBasic.Information.IsNumeric("1"); //true
bool b2 = Microsoft.VisualBasic.Information.IsNumeric("1aa"); // false

De la evaluación comparativa de opciones IsNumeric

texto alternativo
(fuente: aspalliance.com )

texto alternativo
(fuente: aspalliance.com )

Nelson Miranda avatar May 21 '2009 18:05 Nelson Miranda