11 votes

Obtenir l'index du premier espace détecté après un certain index dans une chaîne de caractères.

Dans une chaîne de caractères à formater (principalement pour remplacer les caractères par des symboles différents pour le test de rendu sur l'interface utilisateur), je dois détecter % et ensuite sauter tous les caractères après le premier espace de ce caractère % et cela doit être répété pour toutes les instances dans la chaîne de caractères.

Par exemple abcd%1$s efgh %2$d ijkl Dans cette chaîne, je dois obtenir l'indice de %, puis trouver l'indice du premier espace. En gros, je dois sauter ceci %1$s & %2$d qui sont des sortes d'espaces réservés au formatage. J'espère ne pas être trop complexe.

25voto

Michael Perrenoud Points 37869

Vous pouvez l'obtenir assez facilement, il suffit de saisir l'index du premier signe de pourcentage, puis d'exploiter cet index pour trouver le premier espace à partir de là :

var start = myString.IndexOf("%");
var spaceIndex = myString.IndexOf(" ", start)

Bien sûr, la valeur de myString est la chaîne de caractères que vous avez représentée dans votre question.

0voto

prassie Points 41

La solution suivante est la plus simple, et extensible, pour vos besoins " abcd%1$s efgh %2$d ijkl dans cette chaîne, je dois sauter cette %1$s & %2$d qui sont des sortes d'espaces réservés au formatage."

string[] placeHolders = new string[] {"%1$s", "%2$d"};
string[] splits = "abcd%1$s efgh %2$d ijkl".Split(placeHolders, StringSplitOptions.None);

qui fournira splits comme ["abcd", "efgh", "ijkl"]

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X