2012-10-12 35 views
15

Szukam funkcji, która może sprawdzić znak, jeśli jest liczbą całkowitą i coś z tym zrobić.jak sprawdzić, czy znak jest liczbą całkowitą?

char a = '1'; 

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

Notatka: Należy wziąć pod uwagę, jeśli trzeba "interger" (jako ciąg cyfr - istnieje kilka znaków takich jak ta), "cyfra" (0-9 w wielu językach) lub "liczba" (1/2, ...) –

Odpowiedz

5
+1

IsNumeric zwraca "true" dla znaków nie będących cyframi: http://stackoverflow.com/questions/228532/difference-between-char-isdigit- i-char-number-in-c-sharp –

+0

+1 dla integer.TryParse – Rab

+0

Dzięki za informacje o IsNumber, nie wiedziałem o tym. Usuwam to z mojej odpowiedzi. Czy wiesz, czy funkcja Integer.TryParse robi to samo dla znaków bez cyfr? – lhan

27

Zastosowanie System.Char.IsDigit metoda

+1

+1 do obu IsDigit i IsNumber. Zauważ, że żadna nie gwarantuje, że ten znak jest "liczbą całkowitą", ponieważ IsDigit oznacza po prostu, że jest on na cyfrze potencjalnie dłuższej liczby całkowitej, IsNumber może być zmiennoprzecinkowy (tzn. 1/2). –

+1

IsDigit obejmuje 0-9 i odpowiedniki w innych zestawach znaków, i zawsze jest liczbą całkowitą dla pojedynczego znaku (dla dłuższego ciągu użyj Integer.TryParse). IsNumber zwraca wartość true dla 0-9, a także dla bardziej interesujących znaków Unicode w grupach "Number, Other" i "Number, Letter" takich jak ½ (to 1 znak) http://www.fileformat.info/info/unicode /category/No/list.htm – lgaud

+0

IsDigit zwróci true dla wszystkich tych znaków; inne niż 0-9 nie będą przetwarzane jako liczby całkowite przez int.TryParse z domyślnymi ustawieniami kultury na maszynie angielskiej - http://www.fileformat.info/info/unicode/category/Nd/list.htm – lgaud

0

Spróbuj Char.IsNumber. Dokumentacja i przykłady można znaleźć: here

2

Spróbuj użyć metody System.Char.IsDigit.

0

Lepiej może po prostu użyć instrukcji switch. Coś jak:

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

To będzie działać tak długo, jak szukasz tylko znaków 0-9. Coś więcej niż to (powiedzmy "10") byłoby ciągiem, a nie znakiem. Jeśli starasz się po prostu sprawdzić, czy niektóre wejście jest liczbą całkowitą, a wejście jest ciągiem znaków, można zrobić:

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

bool Char.IsDigit(char c); Metoda powinna działać idealnie dla tego wystąpienia.

char a = '1'; 

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

Najprostsza odpowiedź: char.isDigit(char)

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

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

Witamy w Przepełnienie stosu.Odpowiedzi zawierające tylko kod w nich są zwykle oznaczane jako "niskiej jakości". Przeczytaj sekcję pomocy dotyczącą odpowiedzi na pytania, a następnie rozważ komentarz do swojej odpowiedzi. – Graham

Powiązane problemy