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 :

replace après un certains nombre de caractères [Débutant]


Sujet :

C#

  1. #1
    Membre à l'essai
    Inscrit en
    Novembre 2009
    Messages
    42
    Détails du profil
    Informations forums :
    Inscription : Novembre 2009
    Messages : 42
    Points : 15
    Points
    15
    Par défaut replace après un certains nombre de caractères
    Bonjour et merci d'avance à ceux qui pourront m'aider.

    J'aimerais renommer un chemin dans un textebox mais seulement après le 3ème "\".

    Exemple :

    T:\Exemple\Test\Lajabrege

    J'aimerais donc commencer mon replace au mot "Lajabrege".

    J'ai fait une boucle qui parcourt ma chaîne mais ensuite je ne sais pas comment procéder.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    for (int i = 0; i < textBox1.Text.Length; i++)
    Merci encore.

  2. #2
    Modérateur
    Avatar de DotNetMatt
    Homme Profil pro
    CTO
    Inscrit en
    Février 2010
    Messages
    3 611
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : CTO
    Secteur : Finance

    Informations forums :
    Inscription : Février 2010
    Messages : 3 611
    Points : 9 743
    Points
    9 743
    Billets dans le blog
    3
    Par défaut
    Bonjour,

    Tu peux utiliser la fonction Split() :

    Code C# : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    string path = @"T:\Exemple\Test\Lajabrege";
    string[] splitted = path.Split('\\');

    Dans cet exemple, splitted contiendra 4 valeurs :
    Code C# : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    splitted[0] = "T:";
    splitted[1] = "Exemple";
    splitted[2] = "Test";
    splitted[3] = "Lajabrege";

    Ensuite il te suffit de faire un contrôle sur le nombre d'éléments, et de travailler sur la ligne de la variable splitted ayant pour index 3 :

    Code C# : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    if (splitted.Length >= 3)
    {
        string toReplace = splitted[3];
        // ta logique de remplacement...
    }
    Less Is More
    Pensez à utiliser les boutons , et les balises code
    Desole pour l'absence d'accents, clavier US oblige
    Celui qui pense qu'un professionnel coute cher n'a aucune idee de ce que peut lui couter un incompetent.

  3. #3
    Membre à l'essai
    Inscrit en
    Novembre 2009
    Messages
    42
    Détails du profil
    Informations forums :
    Inscription : Novembre 2009
    Messages : 42
    Points : 15
    Points
    15
    Par défaut
    Merci pour ta réponse.

    J'ai juste pas compris :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    if (splitted.Length >= 3)
    {
        string toReplace = splitted[3];
    Il faut que je dise : S'il y a 3 \ on n’abrège pas sinon oui.
    Je dois donc faire un if et c'est celui que tu m'a donnés?

    Dans ce if je met mes "replace"?

    Je ne comprend pas le :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    string toReplace = splitted[3];
    Merci.

  4. #4
    Modérateur
    Avatar de DotNetMatt
    Homme Profil pro
    CTO
    Inscrit en
    Février 2010
    Messages
    3 611
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : CTO
    Secteur : Finance

    Informations forums :
    Inscription : Février 2010
    Messages : 3 611
    Points : 9 743
    Points
    9 743
    Billets dans le blog
    3
    Par défaut
    Dans ton premier post, tu as dit :

    Citation Envoyé par momo187
    J'aimerais renommer un chemin dans un textebox mais seulement après le 3ème "\".
    Le if permet de s'assurer que l'on a au moins 3 backslash "\".

    Code C# : Sélectionner tout - Visualiser dans une fenêtre à part
    string toReplace = splitted[3];
    J'ai mis ça juste pour te montrer comment récupérer la valeur que tu souhaites remplacer
    Less Is More
    Pensez à utiliser les boutons , et les balises code
    Desole pour l'absence d'accents, clavier US oblige
    Celui qui pense qu'un professionnel coute cher n'a aucune idee de ce que peut lui couter un incompetent.

  5. #5
    Membre à l'essai
    Inscrit en
    Novembre 2009
    Messages
    42
    Détails du profil
    Informations forums :
    Inscription : Novembre 2009
    Messages : 42
    Points : 15
    Points
    15
    Par défaut
    D'accord, mais je n'y arrive pas, je suis nuuul!

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    for (int i = 0; i < textBox1.Text.Length; i++)
                    {
                        string path = @textBox1.Text;
                        string[] splitted = path.Split('\\');
                        if (splitted.Length >= 3)
                        {
                            textBox2.Text = textBox1.Text;
                            textBox2.Text = textBox2.Text.Replace("accompagnement", "acc");
    J'ai fais ceci. J'aimerais qu'il remplace accompagnement pas acc seulement si nous sommes après le 3ème backslash!

    Mais dans mon cas il le fait avant.. Donc je fais une erreur..

    Tu peux m'aider encore un p'tit coup?

  6. #6
    Modérateur
    Avatar de DotNetMatt
    Homme Profil pro
    CTO
    Inscrit en
    Février 2010
    Messages
    3 611
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : CTO
    Secteur : Finance

    Informations forums :
    Inscription : Février 2010
    Messages : 3 611
    Points : 9 743
    Points
    9 743
    Billets dans le blog
    3
    Par défaut
    C'est normal qu'il le fasse avant puisque tu fais ton replace directement sur la valeur provenant de TextBox1

    Reprend mon code :
    Code C# : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    if (splitted.Length >= 3)
    {
        string toReplace = splitted[3];
        // ta logique de remplacement...
    }
    Si le chemin dans TextBox1 est : "T:\Exemple\Test\accompagnement", alors splitted[3] contiendra "accompagnement".

    Il suffit donc à ce moment-là de faire :
    Code C# : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    if (splitted.Length >= 3)
    {
        splitted[3] = splitted[3].Replace("accompagnement", "acc");
    }

    Puis il faut reconstruire le chemin afin de l'afficher dans TextBox2, donc au final ça ressemble à quelque chose comme cela :
    Code C# : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    if (splitted.Length >= 3)
    {
        splitted[3] = splitted[3].Replace("accompagnement", "acc");
     
        for (int i = 0; i < splitted.Length; i++)
        {
            TextBox2.Text += splitted[i] + "\\";
        }
    }

    Dernière remarque, dans le code de ton dernier post, ce n'est pas la peine de garder la boucle for (ligne 1), elle n'est pas utile.
    Less Is More
    Pensez à utiliser les boutons , et les balises code
    Desole pour l'absence d'accents, clavier US oblige
    Celui qui pense qu'un professionnel coute cher n'a aucune idee de ce que peut lui couter un incompetent.

  7. #7
    Membre à l'essai
    Inscrit en
    Novembre 2009
    Messages
    42
    Détails du profil
    Informations forums :
    Inscription : Novembre 2009
    Messages : 42
    Points : 15
    Points
    15
    Par défaut
    Je vois j'ai compris.

    ça fonctionne en tout cas merci beaucoup et bonne journée.

  8. #8
    Membre à l'essai
    Inscrit en
    Novembre 2009
    Messages
    42
    Détails du profil
    Informations forums :
    Inscription : Novembre 2009
    Messages : 42
    Points : 15
    Points
    15
    Par défaut
    Sauf que en mettant 3 il fait l'abréviation qu'au 3ème niveau.. s'il y a 5 niveau et plusieurs fois le mot il ne fait l’abréviation qu'une fois..

    Comment puis-je faire pour qu'il fasse à partir du niveau 3 et non uniquement le niveau 3?

    Merci d'avance

  9. #9
    Membre éprouvé

    Homme Profil pro
    Développeur .NET
    Inscrit en
    Juin 2011
    Messages
    487
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Finance

    Informations forums :
    Inscription : Juin 2011
    Messages : 487
    Points : 945
    Points
    945
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
        for (int i = 0; i < splitted.Length; i++)
        {
            string folder = splitted[i];
     
            if(i >= 3)
                folder = folder.DoReplace();
     
            TextBox2.Text += text + "\\";
        }
    Mon blog sur les technos .NET et Agile -> http://blog.developpez.com/maximepalmisano/

  10. #10
    Membre à l'essai
    Inscrit en
    Novembre 2009
    Messages
    42
    Détails du profil
    Informations forums :
    Inscription : Novembre 2009
    Messages : 42
    Points : 15
    Points
    15
    Par défaut
    Qu'est ce que DoReplace?

  11. #11
    Membre éprouvé

    Homme Profil pro
    Développeur .NET
    Inscrit en
    Juin 2011
    Messages
    487
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Finance

    Informations forums :
    Inscription : Juin 2011
    Messages : 487
    Points : 945
    Points
    945
    Par défaut
    Une méthode fictive où tu appliques un replace à une string.

    Tu peux très bien faire un Replace("Toto", "Tata"), c'est juste un exemple d'algo que je donne.
    Mon blog sur les technos .NET et Agile -> http://blog.developpez.com/maximepalmisano/

  12. #12
    Membre à l'essai
    Inscrit en
    Novembre 2009
    Messages
    42
    Détails du profil
    Informations forums :
    Inscription : Novembre 2009
    Messages : 42
    Points : 15
    Points
    15
    Par défaut
    Okay d'accord désolé je n'avais pas compris!

    ça semble marcher pour le moment!

    Merci beaucoup les gars!

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Montant sur un certain nombre de caractères
    Par John81 dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 08/01/2009, 12h06
  2. Réponses: 5
    Dernier message: 10/11/2008, 09h24
  3. Réponses: 12
    Dernier message: 29/10/2008, 15h27
  4. Enregistrer un certain nombre de caractère
    Par amel123456789 dans le forum Access
    Réponses: 2
    Dernier message: 19/09/2006, 13h06

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