C # Expression régulière
La raison de est inférieure à d
[0-9]
est inattendue inattendue que le jeu de caractères d
et [0-9]
. Cette découverte a déclenché deux problèmes: [0123456789]
est-elle une efficacité plus élevée que le réglage ? [0-9]
[0123456789]
Les gens peuvent penser que la portée est plus efficace, car elle couvre une plage de caractères spécifique et étroite, et la collection répertorie clairement les dix numéros. Cependant, les résultats des tests montrent que les différences de performances entre les deux méthodes sont les moins.
l'efficacité de
est inférieure à?
Le test d
a révélé que l'efficacité de est significativement inférieure à [0-9]
. Ceci est particulièrement déroutant, car est généralement considéré comme l'abréviation de
d
[0-9]
correspondant aux numéros Unicode, d
correspondant aux numéros ASCII [0-9]
avec uniquement des nombres ASCII (0-9), d
correspond à [0-9]
tous les numéros Unicode . Cela comprend des personnages d'autres langues et personnages, tels que les chiffres persans (۱۲۳۴۵۶۷۸۹) et les chiffres Dava Garri (०१२३४५६७८९). Pour le prouver, le code suivant génère une chaîne contenant tous les numéros Unicode:
[0-9]
La chaîne générée montre d
divers caractères identifiés comme des nombres, y compris des caractères arabes, thaï, khamno et autres caractères.
Impact de performance
var sb = new StringBuilder(); for (UInt16 i = 0; i < 0x10FFFF; i++) { if (char.IsDigit((char)i)) { sb.Append((char)i); } } string unicodeDigits = sb.ToString();
Vérifiez la large gamme de plages de caractères (nombres Unicode et nombres ASCII) expliquant les différences de performance entre d
et
produira de meilleures performances que .
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!