2012-10-12 32 views
15

Sto cercando una funzione in grado di controllare il carattere se è un numero intero e fare qualcosa è così.come verificare se il carattere è un numero intero

char a = '1'; 

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

Nota a margine: si dovrebbe prendere in considerazione se avete bisogno di "interger" (come sequenza di cifre - ci sono personaggi coppia come questo), "cifra" (0-9 in più lingue) o "un numero" (1/2, ...) –

risposta

5
+1

IsNumeric restituisce 'true' per caratteri non numerici: http://stackoverflow.com/questions/228532/difference-between-char-isdigit- e-char-isnumber-in-c-sharp –

+0

+1 per intero.TryParse – Rab

+0

Grazie per l'avviso su IsNumber, non ne ero a conoscenza. Lo rimuoverò dalla mia risposta. Sai se Integer.TryParse fa la stessa cosa per i caratteri non numerici? – lhan

27

Usa System.Char.IsDigit metodo

+1

+1 a IsDigit e IsNumber. Nota che nessuno dei due garantisce che il carattere sia "intero" perché IsDigit significa semplicemente che è in cifra di un intero potenzialmente più lungo, IsNumber potrebbe essere float (cioè 1/2). –

+1

IsDigit copre 0-9 e gli equivalenti in altri set di caratteri ed è sempre un numero intero per un singolo carattere (per una stringa più lunga, utilizzare Integer.TryParse). IsNumber restituisce true per 0-9 e per alcuni caratteri Unicode più interessanti nei gruppi "Number, Other" e "Number, Letter" come ½ (ovvero 1 carattere) http://www.fileformat.info/info/unicode /category/No/list.htm – lgaud

+0

IsDigit restituirà true per tutti questi caratteri; a parte 0-9 non verranno analizzati come interi tramite int.TryParse con impostazioni cultura predefinite su una macchina inglese - http://www.fileformat.info/info/unicode/category/Nd/list.htm – lgaud

0

Prova Char.IsNumber. Documentazione ed esempi possono essere trovati here

2

Provare a utilizzare il metodo System.Char.IsDigit.

0

Potrebbe essere meglio utilizzare semplicemente un'istruzione switch. Qualcosa di simile:

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

Ciò funzionerà fino a quando si sta solo alla ricerca di caratteri 0-9. Qualunque cosa in più (diciamo "10") sarebbe una stringa e non un personaggio. Se stai cercando di vedere solo se alcuni input è un numero intero e l'ingresso è una stringa, si può fare:

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

il 012 Il metododovrebbe funzionare perfettamente per questa istanza.

char a = '1'; 

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

più semplice risposta: char.isDigit(char)

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

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

Benvenuti in StackOverflow.Le risposte con solo il codice in esse tendono a essere contrassegnate per la cancellazione in quanto sono "di bassa qualità". Si prega di leggere la sezione di aiuto sulla risposta alle domande, quindi prendere in considerazione l'aggiunta di alcuni commenti alla risposta. – Graham

Problemi correlati