Forum |  HardWare.fr | News | Articles | PC | Prix | S'identifier | S'inscrire | Shop Recherche
1361 connectés 

  FORUM HardWare.fr
  Programmation
  C#/.NET managed

  [C#] Découpage de chaine

 



 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[C#] Découpage de chaine

n°2264487
MisterGoof​y
Posté le 17-08-2015 à 09:43:50  profilanswer
 

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 !!

mood
Publicité
Posté le 17-08-2015 à 09:43:50  profilanswer
 

n°2264488
deliriumtr​emens
sic transit intestinal...
Posté le 17-08-2015 à 10:53:32  profilanswer
 

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 ?

n°2264489
MisterGoof​y
Posté le 17-08-2015 à 10:59:09  profilanswer
 

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 !

n°2264490
deliriumtr​emens
sic transit intestinal...
Posté le 17-08-2015 à 11:05:29  profilanswer
 

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
n°2264494
MisterGoof​y
Posté le 17-08-2015 à 12:54:08  profilanswer
 

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 !


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  C#/.NET managed

  [C#] Découpage de chaine

 

Sujets relatifs
aligner verticalement colonne en CBesoin d'aide en C
[C#] Problème récup fabrique de la classe COMMais où sont donc passées les Windows Form en C++?
QCM en programmation CLancer une Video en C++
[VBS] Find & replace avec une chaine contetant des guillemets[C#] Utilisation DataSet
[C++]Interdiction de caractèreC# et Crystal Report
Plus de sujets relatifs à : [C#] Découpage de chaine


Copyright © 1997-2018 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR