J'ai besoin d'une fonction qui peut obtenir le premier index d'un de plusieurs caractères possibles. Je ne veux pas utiliser Regex à cause de la mauvaise performance. J'ai essayé d'obtenir la min de deux indexof (s) mais cela ne fonctionne pas quand il est contenu dans une chaîne et non l'autre car -1 est plus petit que les deux index.
public static int IndexOf (this string s, char a, char b) => Math.Min(s.IndexOf(a), s.IndexOf(b));
3 Réponses :
Réponse simple: ou pour plus de paramètres: p> Ceci fonctionne car -1 comme UINT sur des paramètres non contrôlés, -1 est équivalent à uint.maxvalue, ce qui signifie que cela est considéré comme une valeur la plus élevée possible signifiant que Min choisira un index plus petit si on existe. P> strong> Si les caractères que vous avez traitent de la même lettre si des cas différents, vous pouvez faire: p>
Cela ressemble donc à si aucun caractère n'existe, cette méthode retournera uint.maxvalue code> au lieu de
-1 code>, est-ce correct?
@Rufusl, puisqu'il est renvoyé sur Int, il retournera -1.
Si je comprends ce que vous demandez, il est d'obtenir le plus petit index entre les index de deux caractères dans une chaîne, mais le problème est que si seulement l'un d'entre eux existe, l'index de l'autre est renvoyé parce qu'il est < code> -1 code>.
Un moyen de résoudre consiste à tester pour tester Cependant, Il y a un problème avec cette méthode d'extension !! strong> p> car il existe une conversion implicite de i beli EVE En effet, les méthodes natives sont évaluées et choisies (s'il y a une correspondance implicite) avant que toutes les méthodes d'extension ne soient évaluées, mais je me trompe peut-être. P> Pour contourner ce problème, nous pouvons simplement donner la méthode Nom différent: p> En outre, nous pouvons utiliser un argument -1 code> dans la première chaîne, puis décidez quoi faire avec la seconde: p> < Pré> xxx pré>
char code > Pour
int code>, cette méthode sera masquée par un Survol natif de l'index code> Méthode qui prend un
Char code> et un
int code> , qui retourne "l'indice zéro de la première occurrence du caractère spécifié, à partir de la position spécifiée." em> p>
paramètres code> pour laisser cette méthode gérer
0 code> à plusieurs Personnages à partir duquel trouver le premier index: p>
Je suggère un peu plus complexe em>, mais j'espère plus pratique em> solution: démo: p> (3, d)
Très bonne réponse. Cette solution dirige des cercles autour d'autres performances. Mieux l'utiliser.
J'ai trouvé que vous pouvez utiliser indexofany.