string.Split() peut prendre en paramètre le nombre maximal de césures, si tu es certain de la forme de la chaîne en entrée tu peux t'en servir. Avec l'exemple que tu donnes (4 éléments) : maLigne.Trim().Split(new [] {' '}, 4).
Si tu veux découper d'abord selon les espaces, puis selon les slash :
maLigne.Trim().Split(new [] {' '}, 4, StringSplitOptions.RemoveEmptyEntries).SelectMany(s => s.Split(new [] {'/'}, StringSplitOptions.RemoveEmptyEntries)).Select(s => s.Trim()).ToArray();
Si tu veux être plus spécifique dans le traitement de la dernière chaîne :
1 2 3 4 5 6 7 8 9
| maLigne.Trim().Split(new[] { ' ' }, 4, StringSplitOptions.RemoveEmptyEntries)
.Aggregate(
new List<string>(),
(l, s) =>
{
if (l.Count < 3) l.Add(s); else l.AddRange(s.Split(new [] {'/'}, StringSplitOptions.RemoveEmptyEntries));
return l;
})
.Select(s => s.Trim()).ToArray(); |
string.Trim() pemet de se débarrasser des espaces en début et en fin de ligne et StringSplitOptions.RemoveEmptyEntries permet de ne pas retenir des résultats de chaine vide lors de la découpe, lorsque l'on a plusieurs caractères de séparation qui se suivent. Mais c'est peut-être "overkill" si le fichier est généré par programmation.
Partager