Lorsque vous essayez de trier un tableau de chaînes où chaque élément se termine par une valeur numérique à l'aide de LINQ, il est essentiel de comprendre le comportement de classement par défaut. Par défaut, les chaînes sont classées lexicographiquement en fonction des valeurs ASCII. Par conséquent, le tri à l'aide de OrderBy considérerait les chaînes dans leur ensemble, ce qui entraînerait un ordre inattendu où les caractères alphabétiques sont prioritaires.
Pour remédier à ce problème et obtenir un ordre précis basé sur des valeurs numériques, il est nécessaire de compléter les valeurs numériques. partie dans la clé de tri. En créant une méthode PadNumbers personnalisée qui utilise des expressions régulières, les parties numériques sont complétées par des zéros pour garantir qu'elles ont une longueur cohérente pour la comparaison. Cette technique de remplissage permet à OrderBy de LINQ de comparer correctement la partie numérique, conduisant à l'ordre souhaité.
Dans l'exemple de code fourni, la méthode PadNumbers est appliquée à chaque chaîne du tableau partNumbers et les valeurs complétées sont utilisées. comme clé de tri. Cette approche laisse les chaînes d'origine inchangées mais exploite les valeurs complétées pour une comparaison numérique précise.
Il est important de considérer le scénario dans lequel les valeurs numériques dépassent la longueur de remplissage définie. Dans de tels cas, l'ordre lexicographique par défaut serait appliqué à la partie débordante, ce qui pourrait ne pas fournir l'ordre souhaité.
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!