163 votes

Différence entre Char.IsDigit () et Char.IsNumber () en C #

Quelle est la différence entre Char.IsDigit() et Char.IsNumber() en C #?

158voto

Michael Burr Points 181287

Char.IsDigit() est un sous-ensemble de l' Char.IsNumber().

Certains des personnages qui sont "numérique", mais pas de chiffres comprennent 0x00b2 et 0x00b3 qui sont en exposant 2 et 3 ('2' et '3') et les glyphes qui sont des fractions telles que"¼', '½', et '¾'.

Notez qu'il existe assez peu de caractères IsDigit() retours true pour les qui ne sont pas dans la plage ASCII de 0x30 à 0x39, comme ces Thaïlandais chiffres: '๐' '๑' '๒' '๓' '๔' '๕' '๖' '๗' '๘' '๙'.

Cet extrait de code vous indique les points de code différents:

static private void test()
{
    for (int i = 0; i <= 0xffff; ++i)
    {
        char c = (char) i;

        if (Char.IsDigit( c) != Char.IsNumber( c)) {
            Console.WriteLine( "Char value {0:x} IsDigit() = {1}, IsNumber() = {2}", i, Char.IsDigit( c), Char.IsNumber( c));
        }
    }
}

70voto

Guy Points 16718

J'ai trouvé la réponse:

Char.IsNumber() détermine si un Char est de tout numérique Unicode catégorie. Cela contraste avec l'appel isdigit, qui détermine si un Char est un radix-10 chiffres.

Les nombres valides sont les membres de la catégories suivantes dans UnicodeCategory:

  1. DecimalDigitNumber
    Les chiffres de caractère, c'est un personnage dans la plage de 0 à 9. Signifié par la désignation Unicode "Nd" (nombre, chiffre décimal). La valeur est de 8.
  2. LetterNumber
    Nombre représenté par une lettre, au lieu d'un chiffre décimal, par exemple, le chiffre Romain cinq, qui est "V". L'indicateur est signifié par la désignation Unicode "Nl" (numéro ou lettre). La valeur est 9.
  3. OtherNumber
    Nombre qui n'est ni un chiffre ni de lettre de nombre, par exemple, la fraction 1/2. L'indicateur est signifié par la désignation Unicode "N" (nombre, d'autres). La valeur est de 10.

Conclusion

  • Char.IsDigit:
    Valide chiffres sont membres de l' DecimalDigitNumber catégorie seulement.
  • Char.IsNumber:
    Les nombres valides sont membres de l' DecimalDigitNumber, LetterNumberou OtherNumber catégorie.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X