[C#] Découpage de chaine

Découpage de chaine [C#] - C#/.NET managed - Programmation

Marsh Posté le 17-08-2015 à 09:43:50    

Bonjour à tous! Voici mon problème.
 
Je développe actuellement un outils d'exctraction qui récupère les chemins d'objets contenu dans une application pour les ranger dans un tableau excel.
Mon soucis est que les chemins sont hypers long, et que j'ai besoin de les découper, mais par la droite !
 
Exemple : ../../dossier/lala/voila/dossier2/dossier3
 
J'aimerais que le découpage me fasse ../../dossier/lala/voila à stocker dans un string, /dossier2 à stocker dans une autre, et pareil pour /dossier3.
 
J'avais tenter d'utiliser la fonction Split mais ça n'a pas été fructueux... Surement une mauvaise utilisation de ma part ! j'espère que vous pourrez m'éclairer !  
 
Merci !!

Reply

Marsh Posté le 17-08-2015 à 09:43:50   

Reply

Marsh Posté le 17-08-2015 à 10:53:32    

Hello,
 
Quelle est la règle ?
 
Toujours l'avant-dernière partie du chemin dans un string, la dernière dans un autre string, et le reste dans un troisième ?
 
Ou c'est lié à autre chose ?

Reply

Marsh Posté le 17-08-2015 à 10:59:09    

C'est ça ! dernier dossier du chemin dans un string, le dossier d'avant dans un autre, et le reste encore dans un autre ! voici un bout de code que j'ai testé mais je me prends des Index hors du tableau..
 
 
string[] values = Incrust.View.Split('/');
int length = values.Length;
int one = length - 1;
int two = length - 2;
int three = length -3;
 
Feuille_incrust.Cells[numLigne,1] = values[three]
Feuille_incrust.Cells[numLigne,2] = values[two]
Feuille_incrust.Cells[numLigne,3] = values[one]
 
numLigne++;
 
 
Tout ça dans un foreach qui fait d'autre choses bien sur !

Reply

Marsh Posté le 17-08-2015 à 11:05:29    

Bon, pas optimisé, mais tu peux faire
 

Code :
  1. var pathes = <tachaine>.Split('/');
  2. var len = pathes.Length;
  3. // pour récupérer le début de la chaîne, il faut reconstruire à partir du tableau, avec un string.Join en remettant le séparateur, et en s'arrêtant au bon moment (ce que fait le TakeWhile)
  4. var res1 = string.Join("/", pathes.TakeWhile((x, i) => i != len - 2)); //../../dossier/lala/voila
  5. var res2 = pathes[len - 2];//dossier2
  6. var res3 = pathes[len - 1];//dossier3


 
 
Quelques contrôles pour être sûr que ta chaîne contient le nombre minimal de "/" serait naturellement nécessaires !
 
Parce que si une de tes chaînes contient "../dossier2", c'est pas pareil.


Message édité par deliriumtremens le 17-08-2015 à 11:10:55
Reply

Marsh Posté le 17-08-2015 à 12:54:08    

Merci pour l'aide j'ai trouvé mon soucis ! En fait il y avait de rare cas ou le chemin était trop court pour être coupé en 3 ! Merci pour l'aide en tout cas !

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed