Répondre à la discussion
Page 1 sur 2 1 DernièreDernière
Affichage des résultats 1 à 30 sur 43

Modifier les caractère d'un texte pour d'autre



  1. #1
    themoder123

    Modifier les caractère d'un texte pour d'autre


    ------

    Bonjour à tous !


    Alors je voudrais savoir comment faire pour convertir un texte (changer les lettres pour d'autre)



    Ex: Bonjour où,

    A = Z

    B = Y

    C = X

    ,etc...

    et "bonjour" devient par exemple : YLMQLEI



    Merci d'avance

    -----

  2. Publicité
  3. #2
    photon57

    Re : Modifier les caractère d'un texte pour d'autre

    Hello,

    le plus souvent on crée une table qui associe à chaque lettre «en clair» la lettre «qui crypte».
    L'implémentation dépend du langage évidemment ainsi que du character set utilisé. Tu essayes de le faire dans un langage particulier ?

  4. #3
    themoder123

    Re : Modifier les caractère d'un texte pour d'autre

    Je suis en C# WPF, j'utilise un fichier texte dans lequel chaque ligne est une lettre "codé" dans l’ordre alphabétique, je lis chaque lignes et pour chaque lettres (a,b,c,d) j'utilise Textbox.Text.Replace("a", Lignes[1])

    Le problème, c'est qu'il marche seulement à moitié ex:

    abcdefghijklmnopqrstuvwxyz et il me donne, abcdefghijklmmlkjihgfedcba, où A = Z, B= Y, C=X, etc.

    Comme vous le voyez, il commence à inverser après M.

    Donc je vous savoir comment faire pour corriger ce bug.

    Merci d'avance

    themoder

  5. #4
    photon57

    Re : Modifier les caractère d'un texte pour d'autre

    Sans code ça va être un peu dur ... Il va falloir le poster.

  6. A voir en vidéo sur Futura
  7. #5
    themoder123

    Re : Modifier les caractère d'un texte pour d'autre

    Désoler j'ai oublier x)

    Code:
     
    private void CodeClick(object sender, RoutedEventArgs e)
            {
                StreamReader Code = new StreamReader(AppDomain.CurrentDomain.BaseDirectory + comboBox1.SelectedItem + ".txt");
    
                int NbrLigne = 27;
    
                string[] LineNumber = new string[NbrLigne];
    
                for (int i = 1; i < NbrLigne; i++)
                {
                    LineNumber[i] = Code.ReadLine();
                }
    
                TextCrypter.Text = TextNonCrypter.Text.
                    Replace("a",LineNumber[1]).
                    Replace("b",LineNumber[2]).
                    Replace("c",LineNumber[3]).
                    Replace("d",LineNumber[4]).
                    Replace("e",LineNumber[5]).
                    Replace("f",LineNumber[6]).
                    Replace("g",LineNumber[7]).
                    Replace("h",LineNumber[8]).
                    Replace("i",LineNumber[9]).
                    Replace("j",LineNumber[10]).
                    Replace("k",LineNumber[11]).
                    Replace("l",LineNumber[12]).
                    Replace("m",LineNumber[13]).
                    Replace("n",LineNumber[14]).
                    Replace("o",LineNumber[15]).
                    Replace("p",LineNumber[16]).
                    Replace("q",LineNumber[17]).
                    Replace("r",LineNumber[18]).
                    Replace("s",LineNumber[19]).
                    Replace("t",LineNumber[20]).
                    Replace("u",LineNumber[21]).
                    Replace("v",LineNumber[22]).
                    Replace("w",LineNumber[23]).
                    Replace("x",LineNumber[24]).
                    Replace("y",LineNumber[25]).
                    Replace("z",LineNumber[26]);
                
            }

  8. #6
    bzh_nicolas

    Re : Modifier les caractère d'un texte pour d'autre

    Poste également le contenu exact de ton fichier.
    Le conseil habituel : Papier et crayon pour voir ce que fait ton algo
    P.S. : les tableau en C# commence à 0 pas à 1.

  9. Publicité
  10. #7
    themoder123

    Re : Modifier les caractère d'un texte pour d'autre

    Dans mon fichier :

    z
    y
    x
    w
    v
    u
    t
    s
    r
    q
    p
    o
    n
    m
    l
    k
    j
    i
    h
    g
    f
    e
    d
    c
    b
    a



    Et merci pour l'info sur les tableaux
    Dernière modification par themoder123 ; 16/10/2011 à 18h47.

  11. #8
    themoder123

    Re : Modifier les caractère d'un texte pour d'autre

    Meme si je change la ligne Replace("b", "y"). , b devient quand meme b

  12. #9
    bzh_nicolas

    Re : Modifier les caractère d'un texte pour d'autre

    Vu ton fichier je comprends mieux. Papier crayon, et reprends ton algo, étapes par étapes, notamment l'hallucinant appel (indice: le problème vient de là) :
    Code:
    TextCrypter.Text = TextNonCrypter.Text.Replace("a",LineNumber[1]). Replace("b",LineNumber[2]).Replace("c",LineNumber[3]).Replace("d",LineNumber[4]).Replace("e",LineNumber[5]).Replace("f",LineNumber[6]).Replace("g",LineNumber[7]).Replace("h",LineNumber[8]).Replace("i",LineNumber[9]).Replace("j",LineNumber[10]).Replace("k",LineNumber[11]).Replace("l",LineNumber[12]).Replace("m",LineNumber[13]).Replace("n",LineNumber[14]).Replace("o",LineNumber[15]).Replace("p",LineNumber[16]).Replace("q",LineNumber[17]).Replace("r",LineNumber[18]).Replace("s",LineNumber[19]).Replace("t",LineNumber[20]).Replace("u",LineNumber[21]).Replace("v",LineNumber[22]).Replace("w",LineNumber[23]).Replace("x",LineNumber[24]).Replace("y",LineNumber[25]).Replace("z",LineNumber[26]);
    J'adore encore plus avec cette présentation
    Quand je dis étape par étape ça veut dire réécris ta chaine à chaque appel de Replace (au bout 13-14 réécriture tu devrais voir le problème).

  13. #10
    themoder123

    Re : Modifier les caractère d'un texte pour d'autre

    Est-il possible qu'il reconvertisse ce qu'il a déja converti ?

  14. #11
    photon57

    Re : Modifier les caractère d'un texte pour d'autre

    re-,

    si tu as suivi le conseil de bzh_nicolas tu n'as plus aucun doute ... c'est le cas.

    si je peux me permettre quelques remarques :

    * tu ouvres un fichier, le lis, construis la table à chaque clic ... plutôt moyen
    J'imagine que tu as construit ton interface avec juste un bouton. C'est peut- être à revoir.
    Soit séparer la lecture du fichier et le codage d'une chaine, soit ne charger le fichier que si nécessaire.

    * tu devrais créer un objet qui gère l'encodage

    * tu devrais choisir un autre algorithme pour encoder, en parcourant la chaine à encoder caractère par caractère par exemple

    * utiliser un stringbuilder ?

  15. #12
    themoder123

    Re : Modifier les caractère d'un texte pour d'autre

    Re,

    Je suis semi-débutant en C#, si vous pouviez un peu m'aider, sa serait vraiment sympa

    1. Un objet qui gère l'encodage, c'est quoi plus précisement ?

    2. J'avais penser à faire cette algo (juste après ma découverte x) ), comment pourrais-je le faire ? Avec un boucle ?

    3. ... Un stringbuilder c'est quoi ?

    Merci de votre aide

  16. Publicité
  17. #13
    photon57

    Re : Modifier les caractère d'un texte pour d'autre

    Je vais essayer d'être clair, tu me dis où tu as des problèmes pour comprendre

    1. L'idée est d'écrire une classe, on va la nommer Decodeur. Cette classe va se charger de lire le fichier, et offrira une méthode pour décoder une chaine de caractère.
    Vois-tu comment faire cela ?

    2. Oui une boucle est ce qu'il te faut pour ça

    3. En c# les string sont immutables, cela signifie qu'une fois créé un string ne peut plus être modifié. Par exemple quand tu écris quelquechose du genre : s=s.replace("a","b"), par derrière le code génère un nouveau string où toutes les occurences de a sont remplacés par des b. L'ancien string sera détruit lors du prochain passage par le GC.
    Faire énormément de manipulations sur les strings peuvent vite devenir inneffectives. La solution est d'utiliser un objet StringBuilder (un constructeur de string). Un string builder te permet de faire des manipulations sur les chaines et quand tout est fini un appel à la méthode ToString te donne le string final.

    4. Il faut essayer de gérer les erreurs ... le fichier n'est pas trouvé, pas lisible, ne contient pas la bonne information ...

    5. Tu peux essayer de regarder du côté des collections génériques. Il y a les Dictionary.

    En gros tu déclares Dictionary<char,char> Translate = new Dictionary()
    Tu peux ajouter des paires d'éléments :
    Translate.Add('a','z')
    Translate.Add('b','y')
    ...
    Translate.Add('z','a')

    L'indexeur Translate['c'] te renvoie ´x´.

    Pratique

  18. #14
    themoder123

    Re : Modifier les caractère d'un texte pour d'autre

    1. La classe je suis pas trop sur, de comment faire, juste un petit exemple de ce que c'est et ca devrait aller, et dedans je mets, la méthode pour lire mon fichier et pour décoder le texte entré ?

    2. La boucle je la fais comment ? Je ne sais pas exactement quel méthode prendre pour lire un à un les caractères et les changers.

    3. Comment j'utilise le stringBuilder ?

    Note: le fichier de code est choisi dans un combobox
    Dernière modification par themoder123 ; 16/10/2011 à 20h42.

  19. #15
    photon57

    Re : Modifier les caractère d'un texte pour d'autre

    Tu débutes en c# mais ce que tu essayes de faire est un exercice que tu dois faire ?

  20. #16
    themoder123

    Re : Modifier les caractère d'un texte pour d'autre

    Non simplement un projet perso, j'ai déja fais un petit jeux et un logiciel de transfert vers un serveur FTP

  21. #17
    Xoxopixo

    Re : Modifier les caractère d'un texte pour d'autre

    Citation Envoyé par Photon57
    3. En c# les string sont immutables, cela signifie qu'une fois créé un string ne peut plus être modifié. Par exemple quand tu écris quelquechose du genre : s=s.replace("a","b"), par derrière le code génère un nouveau string où toutes les occurences de a sont remplacés par des b. L'ancien string sera détruit lors du prochain passage par le GC.
    Faire énormément de manipulations sur les strings peuvent vite devenir inneffectives. La solution est d'utiliser un objet StringBuilder (un constructeur de string). Un string builder te permet de faire des manipulations sur les chaines et quand tout est fini un appel à la méthode ToString te donne le string final.
    Effectivement, c'est la rançon du progrès.

    Citation Envoyé par Dotnetperls
    Benchmarks
    Here we want to see if there is a difference between Method A, which uses string Replace, and Method B, which uses StringBuilder Replace. It is great to read MSDN and know the two are different—but is the timing different significant?

    Replace methods benchmark for short strings
    20 characters in strings; 10000 iterations.

    Method A - String Replace: 5.60 seconds
    Method B - StringBuilder Replace: 0.62 seconds [faster]

    Replace methods benchmark for long strings
    1000 characters in strings; 10000 iterations.

    Method A - String Replace: 21.80 seconds
    Method B - StringBuilder Replace 4.89 seconds [faster]
    http://www.dotnetperls.com/replace
    En bon vivant, rien ne vaut un bonne logique ternaire.

  22. #18
    themoder123

    Re : Modifier les caractère d'un texte pour d'autre

    Merci

    Mais par quel algo je pourrais remplacer l'ancien ? Je sais pas trop comment faire pour lire un caractere a la fois et le changer

  23. Publicité
  24. #19
    photon57

    Re : Modifier les caractère d'un texte pour d'autre

    Une petite réponse rapide ...

    s.Length te donne la longueur de la chaîne de caractères en nombre de caractères UTF16
    s[0] pour accéder au premier, s[1] pour le second etc ...

    une solution avec une boucle for est :
    Code:
    for(int i=0; i<s.Length;i++)
      faire qqch avec s[i]
    À tout moment tu as la position du caractère courant et tu peux facilement accéder au précédant ou au suivant par exemple

    Une autre solution est
    Code:
    foreach(char c in s)
      faire qqch avec le caractère c
    Tu n'as pas directement la position courante.

    Tu as aussi une autre méthode qui utilise Linq mais là ça c'est pour un niveau plus avancé.

  25. #20
    themoder123

    Re : Modifier les caractère d'un texte pour d'autre

    Ok pour,
    Code:
    for(int i=0; i<s.Length;i++)
      faire qqch avec s[i]
    Je ne sais pas trop se que je pourrais faire avec :/

  26. #21
    photon57

    Re : Modifier les caractère d'un texte pour d'autre

    Si tu disposes d'une fonction Encode qui admet un caractère en entrée et qui renvoie le caractère crypté le tour est joué ...

    Code:
    for(int i=0; i<s.Length; i++)
      res=res+Encode(s[i]);
    A priori, vu que tu débutes, je ne peux que te conseiller de d'abord raisonner en Français pour construire un algo, puis le traduire en c#.

  27. #22
    themoder123

    Re : Modifier les caractère d'un texte pour d'autre

    Bon, la classe qui encode, sa marche comment ? et "res" est-ce Résultat ?

  28. #23
    photon57

    Re : Modifier les caractère d'un texte pour d'autre

    Pour apprendre il vaut mieux y aller doucement d'abord et seulement écrire une fonction Encode. res est juste un string qui contient la chaine encodée à la fin du l'algorithme.

  29. #24
    themoder123

    Re : Modifier les caractère d'un texte pour d'autre

    Oui mais comment je creer la classe Encoder ? je ne suis pas sur de comment faire :/

  30. Publicité
  31. #25
    photon57

    Re : Modifier les caractère d'un texte pour d'autre

    On ne parle plus de classe. On oublie ça pour l'instant.
    Sais-tu créer une fonction ?

  32. #26
    themoder123

    Re : Modifier les caractère d'un texte pour d'autre

    Non :/ en fait, que veu tu dire par une fonction? je ne suis pas encore tres famillier avec le jargon de programmeur :/

  33. #27
    photon57

    Re : Modifier les caractère d'un texte pour d'autre

    OK, il va d'abord falloir que tu apprennes ce qu'est une fonction pour pouvoir aller plus loin.

    En gros une fonction est un morceau de code auquel tu passes des paramètres et qui te rend un résultat ou effectue une action particulière. Par exemple CodeClick est une fonction.
    Tu peux écrire tes propres fonctions et les appeler dans ton code.

    As-tu déjà fait quelquechose de similaire ?

  34. #28
    themoder123

    Re : Modifier les caractère d'un texte pour d'autre

    OK comme pour moi, CodeClick est déclencher par un évenement, lors du click sur un bouton, donc, lorsque je click, la fonction CodeClick s'active ?
    Dernière modification par themoder123 ; 17/10/2011 à 22h09.

  35. #29
    themoder123

    Re : Modifier les caractère d'un texte pour d'autre

    La fonction exécute les "méthodes"(<--- pas sur du mot :/) dans celle ci ?

  36. #30
    photon57

    Re : Modifier les caractère d'un texte pour d'autre

    C'est un peu plus compliqué que ça ...
    L'événement s'appelle Click, quand il est activé, toutes les fonctions enregistrées seront exécutées.

    Le plus simple à mon avis est que tu commences par apprendre le langage en suivant un tutoriel. Tu en trouveras un très bon avec toutes les ressources nécessaires sur http://tahe.developpez.com/dotnet/csharp/.

Page 1 sur 2 1 DernièreDernière

Discussions similaires

  1. chercher une chaine de caractère dans un texte en Langage C
    Par lui dans le forum Programmation et langages, Algorithmique
    Réponses: 17
    Dernier message: 10/12/2010, 00h01
  2. Modifier un fichier texte avec MATLAB
    Par bouigs dans le forum Logiciel - Software - Open Source
    Réponses: 7
    Dernier message: 14/12/2009, 14h15
  3. modifier un texte scanné
    Par goundroune dans le forum Logiciel - Software - Open Source
    Réponses: 10
    Dernier message: 30/11/2006, 20h47
  4. Modifier les fréquences d'un autoradio?
    Par jacouille dans le forum Électronique
    Réponses: 2
    Dernier message: 17/06/2005, 13h19
  5. besoin d'un ptit coup de main pour commentaire d'un petit texte de Kant
    Par unefilledu33 dans le forum [ARCHIVE] Philosophie
    Réponses: 4
    Dernier message: 30/10/2004, 11h40