C # prueba para ver si una cadena es un número entero

Soy curioso sobre si hay algo integrado en el lenguaje c # o en el framework .net que prueba para ver si algo es un entero

if (x is an int) // Do something 

Me parece que puede haber, pero yo solo soy un estudiante de progtwigción de primer año, así que no sé.

Use el método int.TryParse .

 string x = "42"; int value; if(int.TryParse(x, out value)) // Do something 

Si analiza correctamente, devolverá verdadero, y el resultado de salida tendrá su valor como un entero.

Creo que recuerdo haber observado una comparación de rendimiento entre int.TryParse e int.Parse Regex y char.IsNumber y char.IsNumber fue el más rápido. En cualquier caso, cualquiera que sea el rendimiento, aquí hay una forma más de hacerlo.

  bool isNumeric = true; foreach (char c in "12345") { if (!Char.IsNumber(c)) { isNumeric = false; break; } } 

Para la solución Wil P (ver arriba) también puede usar LINQ.

 var x = "12345"; var isNumeric = !string.IsNullOrEmpty(x) && x.All(Char.IsDigit); 

Si solo desea verificar el tipo de variable pasada, probablemente podría usar:

  var a = 2; if (a is int) { //is integer } //or: if (a.GetType() == typeof(int)) { //is integer } 

Esta función le dirá si su cadena contiene SOLAMENTE los caracteres 0123456789.

 private bool IsInt(string sVal) { foreach (char c in sVal) { int iN = (int)c; if ((iN > 57) || (iN < 48)) return false; } return true; } 

Esto es diferente de int.TryParse () que le dirá si su cadena PODRÍA SER un número entero.
p.ej. "123 \ r \ n" devolverá TRUE desde int.TryParse () pero FALSE desde la función anterior.

... Solo depende de la pregunta que necesita responder.

es simple … usa esta pieza de código

 bool anyname = your_string_Name.All(char.IsDigit); 

volverá verdadero si su cadena tiene un número entero falso sabio …

Si solo desea comprobar si es una cadena o no , puede colocar las palabras clave “out int” directamente dentro de una llamada a método. Según el sitio web dotnetperls.com, las versiones anteriores de C # no permiten esta syntax. Al hacer esto, puede reducir el recuento de líneas del progtwig.

 string x = "text or int"; if (int.TryParse(x, out int output)) { // Console.WriteLine(x); // x is an int // Do something } else { // x is not an int } 

Si también desea obtener los valores int, puede escribir de esta manera.

Método 1

 string x = "text or int"; int value = 0; if(int.TryParse(x, out value)) { // x is an int // Do something } else { // x is not an int } 

Método 2

 string x = "text or int"; int num = Convert.ToInt32(x); Console.WriteLine(num); 

Referece: https://www.dotnetperls.com/parse

He estado codificando durante aproximadamente 2 semanas y he creado una lógica simple para validar que se haya aceptado un número entero.

  Console.WriteLine("How many numbers do you want to enter?"); // request a number string input = Console.ReadLine(); // set the input as a string variable int numberTotal; // declare an int variable if (!int.TryParse(input, out numberTotal)) // process if input was an invalid number { while (numberTotal < 1) // numberTotal is set to 0 by default if no number is entered { Console.WriteLine(input + " is an invalid number."); // error message int.TryParse(Console.ReadLine(), out numberTotal); // allows the user to input another value } } // this loop will repeat until numberTotal has an int set to 1 or above 

también puede usar lo anterior en un ciclo FOR si lo prefiere al no declarar una acción como el tercer parámetro del ciclo, como

  Console.WriteLine("How many numbers do you want to enter?"); string input2 = Console.ReadLine(); if (!int.TryParse(input2, out numberTotal2)) { for (int numberTotal2 = 0; numberTotal2 < 1;) { Console.WriteLine(input2 + " is an invalid number."); int.TryParse(Console.ReadLine(), out numberTotal2); } } 

si no quieres un bucle, simplemente quita todo el bucle

 private bool isNumber(object p_Value) { try { if (int.Parse(p_Value.ToString()).GetType().Equals(typeof(int))) return true; else return false; } catch (Exception ex) { return false; } } 

Algo que escribí hace un tiempo. Algunos buenos ejemplos arriba pero solo mi valor de 2 centavos.

hay un método simple en c # 7

 // if input 10 var input = int.TryParse(Console.ReadLine(), out var output); // input = true, output = 10 // or if input will be "abcd", you will get: // input = false, output = 0 

en la entrada tendrá falso o verdadero y en la salida tendrá número convertido si se puede convertir.