Je souhaite diviser une chaîne sans utiliser la méthode String.Split.
J'ai trouvé une solution possible here. Le code que j'utilise provient de la deuxième réponse.
Ceci est mon code:La division d'une chaîne sans utiliser la méthode String.Split ne renvoie pas le résultat correct
public string[] SplitString(string input, char delimiter)
{
List<String> parts = new List<String>();
StringBuilder buff = new StringBuilder();
for (int i = 0; i < input.Length; i++)
{
if (input[i] == delimiter)
{
parts.Add(buff.ToString());
buff.Clear();
}
else
{
buff.Append(input[i]);
}
}
return parts.ToArray();
}
Mon problème est que lorsque je tente de diviser une chaîne comme celui-ci
chien personne voiture chat par « », le résultat contient les mots sans la dernière un (dans cet exemple - personne).
Si après le dernier mot il y a un espace blanc, le résultat est correct.
J'ai essayé d'ajouter quelque chose comme i == input.Length lorsque la boucle est 0-i < = input.Length. Mais le résultat était toujours sans le dernier mot.
Ai-je raté quelque chose?
Vous devez vérifier si le tampon n'est pas vide à la fin de la boucle for. S'il est vide, c'est fait, ou il reste encore un dernier jeu de caractères – praty
Après la boucle, vérifiez la longueur du tampon. Si c'est plus de 0, ajoutez-le à la liste. –