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 :

Comment modifier une chaine de caracteres ?


Sujet :

C#

  1. #1
    Membre du Club Avatar de ralf91
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    419
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 419
    Points : 60
    Points
    60
    Par défaut Comment modifier une chaine de caracteres ?
    bonsoir !!
    voila j'ai une chaine de caracteres qui contient trois mots ch=" Ja1 Ja2 Ja3".
    j'aimerais remplacer un mot par une autre chaine par exemple remplacer Ja2 par bbbb. donc la j'ai entendu parler que je ne peux pas travailler directement avec la class string !!!! par contre je dois utiliser la class stringbuilder ??? mais la je ne sais pas comment faire ! est ce que je dois faire :
    stringbuilder ch = new stringbuilder(" Ja1 Ja2 Ja3"); en suite je mets ch.Append ... desole je ne connais pas la suite !!! qu'est ce que je dois faire ?

  2. #2
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Points : 39 753
    Points
    39 753
    Par défaut
    Tu peux tout à fait utiliser la classe String... par contre une chaine n'est pas modifiable, donc en fait tu crées une nouvelle chaine modifiée :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    string ch2 = ch.Replace("Ja2", "bbbb");
    Tu peux même enchainer les Replace :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    string ch2 = ch.Replace("Ja2", "bbbb").Replace("Ja3", "cccc").Replace.... ;

  3. #3
    Membre éclairé Avatar de ppphil
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    612
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Juin 2007
    Messages : 612
    Points : 685
    Points
    685
    Par défaut
    Fais attention avec les Replace à ce que la chaine à remplacée ne soit pas contenue dans une autre style Ja1, Ja11...
    Dans ce cas, et si tu sais par quel caractère sont séparées tes chaines, travaille avec un tableau :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    string s1 = "Ja1 Ja11 Ja2 Ja22";
    string s2;
    s2 = s1.Split(' ')[0]; //s2 = Ja1

  4. #4
    Membre éclairé Avatar de ppphil
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    612
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Juin 2007
    Messages : 612
    Points : 685
    Points
    685
    Par défaut
    Ouais, chus pas encore bien réveillé...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
          string s1 = "Ja1 Ja11 Ja2 Ja22";
          string[] s2;
          s2 = s1.Split(' ');
          s2[0] = "Ja3";
          s1 = string.Join(" ", s2); //s1 = Ja3 Ja11 Ja2 Ja22
    Et avec le Replace, toujours si tu connais le car de séparation entre tes chaines :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    string ch2 = ch.Replace(" Ja2 ", " bbbb ");
    en ajoutant l'espace avant et après les chaines...

  5. #5
    Membre du Club Avatar de ralf91
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    419
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 419
    Points : 60
    Points
    60
    Par défaut
    salut !!
    quand j'utilise un tableau, je dois d'abord connaître la position du mot comme tu as mis par exemple
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     s2 = s1.Split(' ')[0]; //s2 = Ja1
    donc la tu lui donnes la position 0 !!! mais moi je ne connais pas les positions !!

  6. #6
    Membre du Club Avatar de ralf91
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    419
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 419
    Points : 60
    Points
    60
    Par défaut
    salut !!
    j'ai trouvé une petite solution pour régler ce problème, au fait mercii ppphil de me l'avoir signaler, au départ j'ai pas fait attention merci !!!
    maintenant ma petite solution je mets :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    string s="Ja1 Ja11 Ja2 Ja22";
     
    if (s[s.indexOf[Ja1]+"Ja1".length]==" ") //j'ai mis .length pour n'importe quelle chaîne mais je ne sais pas si C# compte "\0" si c'est le cas alors length+1
    string s2 = s.Replace("Ja1", "bbbb");
    voila c'est un peu long mais plus sur je pense !!!
    a+

  7. #7
    Membre habitué Avatar de stephane.julien
    Inscrit en
    Septembre 2007
    Messages
    342
    Détails du profil
    Informations personnelles :
    Âge : 40

    Informations forums :
    Inscription : Septembre 2007
    Messages : 342
    Points : 130
    Points
    130
    Par défaut
    Et pourquoi tu rechercherais pas directement "Ja1 " ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    s.Replace("Ja1 ", "bbbb ");

  8. #8
    mow
    mow est déconnecté
    Membre habitué
    Profil pro
    Inscrit en
    Juillet 2002
    Messages
    210
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2002
    Messages : 210
    Points : 166
    Points
    166
    Par défaut
    Parce que "Ja1" pourrait se trouver en fin de chaîne.
    Pas de simplification hâtive !!


  9. #9
    Membre habitué Avatar de stephane.julien
    Inscrit en
    Septembre 2007
    Messages
    342
    Détails du profil
    Informations personnelles :
    Âge : 40

    Informations forums :
    Inscription : Septembre 2007
    Messages : 342
    Points : 130
    Points
    130
    Par défaut
    Juste...

  10. #10
    Rédacteur
    Avatar de SaumonAgile
    Homme Profil pro
    Team leader
    Inscrit en
    Avril 2007
    Messages
    4 028
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Team leader
    Secteur : Conseil

    Informations forums :
    Inscription : Avril 2007
    Messages : 4 028
    Points : 6 334
    Points
    6 334
    Par défaut
    La meilleure solution serait tout de même d'utiliser une expression rationnelle.
    Cela permettrait de gérer de la même manière le fait que la chaine recherchée soit suivie d'un espace ou soit en fin de chaine en utilisant la notion de "boundary".

  11. #11
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Points : 39 753
    Points
    39 753
    Par défaut
    Citation Envoyé par SaumonAgile Voir le message
    La meilleure solution serait tout de même d'utiliser une expression rationnelle.
    Cela permettrait de gérer de la même manière le fait que la chaine recherchée soit suivie d'un espace ou soit en fin de chaine en utilisant la notion de "boundary".
    +1
    Une expression rationnelle (ou régulière) est clairement la meilleure méthode pour un remplacement un peu complexe.
    cf. la doc de la classe Regex pour plus d'infos

  12. #12
    Membre du Club Avatar de ralf91
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    419
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 419
    Points : 60
    Points
    60
    Par défaut
    salut !!!
    waw les expressions régulières pour effectuer un remplacement !!! pourquoi et ce que j'ai fait là-haut !!! il me semble correcte non !! pour la fin de chaîne ben pas de soucis ! car ma chaîne se termine avec ")" et avant cette parenthèse il ya un blanc, oui je sais que c'est un bricolage mais bon, c'est plus simple que les expressions régulières

  13. #13
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Points : 39 753
    Points
    39 753
    Par défaut
    Citation Envoyé par ralf91 Voir le message
    salut !!!
    waw les expressions régulières pour effectuer un remplacement !!! pourquoi et ce que j'ai fait là-haut !!! il me semble correcte non !! pour la fin de chaîne ben pas de soucis ! car ma chaîne se termine avec ")" et avant cette parenthèse il ya un blanc, oui je sais que c'est un bricolage mais bon, c'est plus simple que les expressions régulières
    A toi de voir... mais ce serait l'occasion d'apprendre à utiliser les expressions régulières, qui sont un outil très puissant.

  14. #14
    Membre du Club Avatar de ralf91
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    419
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 419
    Points : 60
    Points
    60
    Par défaut
    salut !!
    pour la doc sur les expressions régulières je fais une recherche sur la class Regex ??

  15. #15
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Points : 39 753
    Points
    39 753
    Par défaut
    Citation Envoyé par ralf91 Voir le message
    salut !!
    pour la doc sur les expressions régulières je fais une recherche sur la class Regex ??
    Oui
    Dans la doc du framework ou sur le site MSDN, tu as toutes les infos nécessaires a priori

Discussions similaires

  1. Réponses: 1
    Dernier message: 13/06/2007, 13h14
  2. Comment incrementer une chaine de caracteres
    Par KeZyX dans le forum C++
    Réponses: 7
    Dernier message: 04/06/2007, 08h34
  3. Réponses: 10
    Dernier message: 16/06/2006, 13h53
  4. comment chercher une chaine de caractere
    Par phpaide dans le forum Langage
    Réponses: 2
    Dernier message: 30/05/2006, 12h12
  5. Réponses: 3
    Dernier message: 12/05/2006, 10h53

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