Quelle est la différence entre Char.IsDigit()
et Char.IsNumber()
en C #?
Réponses
Trop de publicités?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));
}
}
}
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:
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.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.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
,LetterNumber
ouOtherNumber
catégorie.