IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C# Discussion :

Traitement d'un chaine avec Join et Split ,Possible!


Sujet :

C#

  1. #1
    Membre du Club
    Homme Profil pro
    Inscrit en
    Décembre 2011
    Messages
    44
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Décembre 2011
    Messages : 44
    Points : 41
    Points
    41
    Par défaut Traitement d'un chaine avec Join et Split ,Possible!
    Salut .
    Pourquoi le code suivant est fausse; il s'affiche rien....!!
    le but de ce code est :
    la convertion le premier chaine pour obtenir le deuxieme.(chaine ;non tableaux de chaine)

    " pourquoi le code suivant est fausse "------------------->" pourquoi code fausse "

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    string SGlob = " pourquoi le code suivant est fausse "
     
    string[] WordsList=new string[] { "le","suivant","est"};
                    //supprimer WordList est remplacer par une chaine vide ou un espace
                  for(int i =0;i<3;i++)
                      {
                     SGlob = string.Join(WordList[i], SGlob.Split(new string[] { " " }, StringSplitOptions.RemoveEmptyEntries));
                       }
    	Console.WriteLine(SGlob);
    a ce qu'il y'a autre methode pour faire ça.
    Merci d'avance .

  2. #2
    Expert éminent Avatar de Graffito
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    5 993
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 5 993
    Points : 7 903
    Points
    7 903
    Par défaut
    Les paramètres de la fonction String.Join sont "Separator" suivi de "Values".

    Ainsi, le résultat de la première itération de la boucle utilisera "le" comme séparateur et donnera pour Sglob : "pourquoilelelecodelesuivantleestlefausse".

    Dans la 2ème itération, comme Sglob ne comporte plus de " ", le Split donnera un tableau d'un seul élément égal à Sglob, et le Join ne fera que copier cet élément dans Sglob (qui restera donc inchangé).
    Idem dans la 3ème itération.

  3. #3
    Membre émérite Avatar de meziantou
    Homme Profil pro
    Ingénieur R&D
    Inscrit en
    Avril 2010
    Messages
    1 223
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : Canada

    Informations professionnelles :
    Activité : Ingénieur R&D
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2010
    Messages : 1 223
    Points : 2 439
    Points
    2 439
    Par défaut
    Pour supprimer un mot d'une chaine de caractère tu peux utiliser la méthode Replace
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    string SGlob = " pourquoi le code suivant est fausse ";
    SGlob = SGlob.Replace("le", "");

  4. #4
    Membre du Club
    Homme Profil pro
    Inscrit en
    Décembre 2011
    Messages
    44
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Décembre 2011
    Messages : 44
    Points : 41
    Points
    41
    Par défaut
    Merci beaucoup Graffito.
    Alors ;a ce qu'il existe autre méthode pour resoudre mon problème.

  5. #5
    Membre du Club
    Homme Profil pro
    Inscrit en
    Décembre 2011
    Messages
    44
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Décembre 2011
    Messages : 44
    Points : 41
    Points
    41
    Par défaut
    merci meziantou.
    j'ai utilise cette methode,mais le probléme est :
    mon string SGlob est le contenant d'un texte txt .(avec StremReader).
    mais il ça marche pas!

  6. #6
    Expert éminent Avatar de Graffito
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    5 993
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 5 993
    Points : 7 903
    Points
    7 903
    Par défaut
    L'idée est :
    • d'extraire les mots de la chaine initiale dans un tableau,
    • de recomposer la chaine avec les mots à ne pas supprimer.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    string SGlob = "pourquoi le code suivant est faux" ;
    string[] WordsList=newstring[] { "le","suivant","est"};
    string[] TGlob=SGlob.Split(' ',StringSplitOptions.RemoveEmptyEntries) ;
    SGlob="" ;
    for(int i =0;i<TGlob.Length;i++) if (!WordList.Contains(TGlob[i])) SGlob +=(SGlob=="" ? "" : " ") + TGlob[i] ;

  7. #7
    Membre du Club
    Homme Profil pro
    Inscrit en
    Décembre 2011
    Messages
    44
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Décembre 2011
    Messages : 44
    Points : 41
    Points
    41
    Par défaut
    merci Graffito.
    très bon méthode .
    mes regardes ;
    c'est ma chaine est :"pourquoi le code suivant est faux \n\n\n\nle code est bon"
    le résultat :
    pourquoi code faux
    le code bon

    mais si on ajoute un espace entre \n le
    ;ça marche (supprimer la chaine "le").

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
         static void Main(string[] args)
            {
                string SGlob = "pourquoi le code suivant est faux \n\n\n\nle code est bon ";
                SGlob = Regex.Replace(SGlob, @"^\s+$[\r\n]*", "", RegexOptions.Multiline);
                string[] WordsList = new string[] { "le", "suivant", "est" };
                string[] TGlob = SGlob.Split(new char[] { ' ' }, StringSplitOptions.RemoveEmptyEntries);
                SGlob = "";
                for (int i = 0; i < TGlob.Length; i++) if (!WordsList.Contains(TGlob[i])) SGlob += (SGlob == "" ? "" : " ") + TGlob[i];
                Console.WriteLine(SGlob);
                Console.ReadKey();
            }
     
        }
    alors; comment fais pour le cas de \nle (sans espaces)

Discussions similaires

  1. Découpe de chaine avec String.split()
    Par boboss123 dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 15/10/2012, 15h52
  2. Traitement de chaine avec des pipes
    Par ag_77 dans le forum Langage SQL
    Réponses: 4
    Dernier message: 04/10/2007, 11h37
  3. Traitement de chaine avec ksh
    Par chtite_maguette dans le forum Linux
    Réponses: 3
    Dernier message: 20/04/2006, 17h30
  4. Séparer les nombres d'une chaine avec split
    Par guano dans le forum Langage
    Réponses: 4
    Dernier message: 16/03/2006, 17h14
  5. VB - Traitement de chaine avec séparateur
    Par soulryo dans le forum VB 6 et antérieur
    Réponses: 2
    Dernier message: 15/12/2005, 13h23

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo