2012-10-12 222 views
15

Estoy buscando una función que pueda verificar el carácter si es un número entero y hacer algo es así.cómo comprobar si el carácter es un número entero

char a = '1'; 

if (Function(a)) 
{ 
    do something 
} 
+0

Nota al margen: usted debe considerar si es necesario "número entero" (como la secuencia de dígitos - hay personajes como este par), "dígito" (0-9 en varios idiomas) o "un número" (1/2, ...) –

Respuesta

5
+1

IsNumeric devuelve 'true' para caracteres que no son dígitos: http://stackoverflow.com/questions/228532/difference-between-char-isdigit- and-char-isnumber-in-c-sharp –

+0

+1 para integer.TryParse – Rab

+0

Gracias por la información sobre IsNumber, no estaba al tanto de eso. Eliminaré eso de mi respuesta. ¿Sabes si Integer.TryParse hace lo mismo para los caracteres que no son dígitos? – lhan

27

Uso System.Char.IsDigit método

+1

+1 a IsDigit e IsNumber. Tenga en cuenta que ninguno de los dos garantiza que el carácter sea "entero" porque IsDigit simplemente significa que está en un dígito de un entero potencialmente más largo, IsNumber podría estar flotante (es decir, 1/2). –

+1

IsDigit cubre 0-9 y equivalentes en otros juegos de caracteres, y siempre es un número entero para un solo carácter (para una cadena más larga, use Integer.TryParse). IsNumber devuelve verdadero para 0-9 así como para algunos caracteres Unicode más interesantes en los grupos "Number, Other" y "Number, Letter" como ½ (eso es 1 carácter) http://www.fileformat.info/info/unicode /category/No/list.htm – lgaud

+0

IsDigit devolverá verdadero para todos estos caracteres; que no sean 0-9, no se analizarán como enteros a través de int.TryParse con la configuración de cultivo predeterminada en una máquina en inglés - http://www.fileformat.info/info/unicode/category/Nd/list.htm – lgaud

0

Trate Char.IsNumber. La documentación y los ejemplos se pueden encontrar here

2

Pruebe usar el método System.Char.IsDigit.

0

Puede ser mejor simplemente usar una instrucción de interruptor. Algo como:

switch(a) 
{ 
    case '1': 
    //do something. 
    break; 
    case '2': 
    // do something else. 
    break; 
    default: // Not an integer 
    throw new FormatException(); 
    break; 
} 

Esto funcionará siempre que solo esté buscando los caracteres 0-9. Cualquier cosa más que eso (digamos "10") sería una cadena y no un personaje. Si usted está tratando de ver apenas si alguna entrada es un entero y la entrada es una cadena, que puede hacer:

try 
{ 
    Convert.ToInt32("10") 
} 
catch (FormatException err) 
{ 
    // Not an integer, display some error. 
} 
0

el bool Char.IsDigit(char c); El método debería funcionar perfectamente para esta instancia.

char a = '1'; 

if (Char.IsDigit(a)) 
{ 
    //do something 
} 
0

más simple respuesta: char.isDigit(char)

0
char a = '1'; // use var instead of char if a built-in-type 

if (char.IsNumber(a)) 
{ 
    do something 
} 
+0

Bienvenido a Desbordamiento de pila.Las respuestas con solo código en ellas tienden a marcarse para su eliminación ya que son de "baja calidad". Lea la sección de ayuda para responder preguntas y luego considere agregar algún comentario a su respuesta. – Graham

Cuestiones relacionadas