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
}
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
}
Integer.TryParse
działa dobrze.
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 –
+1 dla integer.TryParse – Rab
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
Zastosowanie System.Char.IsDigit metoda
+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). –
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
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
Spróbuj Char.IsNumber
. Dokumentacja i przykłady można znaleźć: here
Spróbuj użyć metody System.Char.IsDigit
.
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.
}
Jeśli chcesz tylko czyste 0-9
cyfry, użyj
if(a>='0' && a<='9')
IsNumeric
i IsDigit
zarówno powrócić prawda dla niektórych znaków spoza zakresu 0-9:
bool Char.IsDigit(char c);
Metoda powinna działać idealnie dla tego wystąpienia.
char a = '1';
if (Char.IsDigit(a))
{
//do something
}
Najprostsza odpowiedź: char.isDigit(char)
char a = '1'; // use var instead of char if a built-in-type
if (char.IsNumber(a))
{
do something
}
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
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, ...) –