Parcourez l'alphabet de a à z en utilisant C#
P粉982881583
2023-08-23 09:51:55
<p>J'ai une question sur la traversée de l'alphabet.
Je veux une boucle qui commence à "a" et se termine à "z". Ensuite, la boucle commence à partir de « aa » et compte jusqu'à « az ». Commencez ensuite par "ba", allez à "bz", et ainsi de suite...</p>
<p> Quelqu'un connaît-il une solution ? </p>
<h2>Merci</h2>
<p>Edit : J'ai oublié, je donne un caractère "a" à la fonction et ensuite la fonction doit retourner "b". Si "bnc" est donné, la fonction doit renvoyer "bnd". </p>
Essayez d'abord, utilisez simplement a-z puis aa-zz
Notez que cela s'arrêtera à « zz ». Bien sûr, il y a quelques vilaines répétitions dans la boucle. Heureusement, c'est facile à résoudre - et cela peut être encore plus flexible :
Deuxième essai : un alphabet plus flexible
Maintenant, si vous souhaitez simplement générer a, b, c, d, aa, ab, ac, ad, ba, etc., vous pouvez appeler
GetExcelColumns("abcd")
.Troisième tentative (révisée davantage) - Séquence infinie
Peut-être que l'utilisation de la récursion entraînera un code plus propre, mais ce ne sera pas aussi efficace.
Veuillez noter que si vous souhaitez vous arrêter à un point précis, vous pouvez utiliser LINQ :
Itérateur "redémarrer"
Pour redémarrer l'itérateur à partir d'un point donné, vous pouvez utiliser
SkipWhile
comme suggéré par le logicieljedi. Bien entendu, cela est assez inefficace. Si vous pouvez conserver n'importe quel état entre les appels, vous pouvez conserver l'itérateur (pour l'une ou l'autre solution) :Alternativement, vous pourrez peut-être structurer votre code pour l'utiliser
foreach
, en le cassant lorsque la première valeur pouvant réellement être utilisée est trouvée.EDIT : faites-le exactement selon la dernière modification du message original
C'est la solution la plus simple et testée :