Suppression ligne avec charactères indentique txt

olidebug Messages postés 6 Date d'inscription mardi 14 août 2018 Statut Membre Dernière intervention 29 septembre 2018 - Modifié le 28 sept. 2018 à 11:26
Whismeril Messages postés 19020 Date d'inscription mardi 11 mars 2003 Statut Contributeur Dernière intervention 15 avril 2024 - 29 sept. 2018 à 19:49
Bonjour, (je suis debutant....)
j'ai fait un generateur de mot de passe en c#
Après la création d'un fichier text avec des données et des caractère Héxadecimal uniquement exemple :
019AA660B68D27
02E7A661EF4A07
E355FEDE6893BB

Je veux suprimer les lignes, enlever l'espace apres supression de mon fichier text (SerialNum.txt) contenant plusieurs caractère identique avec un bouton pour contrôler le fichier avant de l'ouvrir :
exemple :
019AA6AABBB27
02E77777EF4A07
E355FEDEEEEEBB

J'ai testé pas mal de codage et rien ne fonctionne. (Suppression de ligne, contrôle des caractère ect ...)
Merci de votre aide.

3 réponses

Whismeril Messages postés 19020 Date d'inscription mardi 11 mars 2003 Statut Contributeur Dernière intervention 15 avril 2024 656
28 sept. 2018 à 13:13
Bonjour
Plusieurs caractères indentiques consécutifs ou dans tous le mot de passe?
0
olidebug Messages postés 6 Date d'inscription mardi 14 août 2018 Statut Membre Dernière intervention 29 septembre 2018
28 sept. 2018 à 14:13
Bonjour, merci de prendre du temps pour moi.
j'ai du mal m'exprimer, je debute en c# et sur le forum aussi :
-c'est pour Plusieurs caractères indentiques dans une même ligne.
et contrôler tout les mots de passes qui auront été générés dans le fichier (SerialNum.txt, qui exeste déjà ... )
Il faut que je puisse contrôler le ficher txt qui aura été crée avant de l'ouvrir.
Eliminer les lignes :
0101010101010 (plusieurs 0 et 1 ligne à suprimer le vide qu'elle laisse)
...X ligne
001A1A1A1A1A (plusieurs 1 et A ligne à suprime le vide qu'elle laisser)
...X ligne
0C28DE68C6F0A (on conserve)
...X ligne
0C281E60C9F0A (on conserve )
...X ligne
EEEEAAAA45555 (plusieurs E, A et 5 ligne à suprimer le vide qu'elle laisse)
...X lignes
0E454EFFE75E0E (plusieurs E ligne à suprimer le vide qu'elle laisse)
Mon but et d'autoriser maximum de 3, 4, 5 chiffre ou lettre identique dans le mot de passe.
Le top serais que ca ma donne en meme temp le nombre total de ligne contenues dans le fichier TXT !
Mais ca, je verrais après...
Bonne après midi.
0
Whismeril Messages postés 19020 Date d'inscription mardi 11 mars 2003 Statut Contributeur Dernière intervention 15 avril 2024 656
28 sept. 2018 à 17:39
C'est parfaitement possible avec une regex.
Cependant, ça n'est pas optimisé.
Admettons que tu doives générer 100 mots de passe.
T'en fais donc 100.
Ensuite tu les relis tous et tu en vires 38.
Tu en refais 38.
Tu les relis tous et tu en vires 7.
etc...

Bref autant générer tout de suite un mot de au bon format.

Voila deux principes pour un mot de passe "sans doublon":
  • 1
    • Tu crées une collection de départ, avec chaque valeur possible (si tu autorises deux 'A' alors il sera présent deux fois dans la collection).
    • Tu "tires" aléatoirement un index.
    • Tu enlèves l'item situé à l'index en question et tu le mets dans la collection résultat.
    • Et ainsi de suite.
  • 2
    • Tu crées la même collection de départ.
    • Tu la mélanges
    • Tu prends les n premiers items de la collection mélangée.


Et le code du principe 2
        private string GenereMDP()
        {
            List<char> liste = new List<char> { '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'A', 'B', 'C', 'D', 'E', 'F' };//collection de départ

            IEnumerable<char> melange = liste.OrderBy(x => new Guid());//melange la liste en fonction d'un truc complétement aléatoire le GUID

            return string.Join("", melange.Take(12));//construit et retourne un string en joignant les 12 premiers éléments de melange avec "" comme séparateur.
        }
0
olidebug Messages postés 6 Date d'inscription mardi 14 août 2018 Statut Membre Dernière intervention 29 septembre 2018
Modifié le 28 sept. 2018 à 19:12
Bonsoir,

Je ne peu pas faire de l'aléatoire. Sinon j'aurais fait ca :


private string lettermdp = "0123456789ABCDEF";
private void button15_Click(object sender, EventArgs e)
        {
            Random random = new Random();
            for (int index = 0; index < 14; ++index)
            {
                TextBox textBox = textBox3;
                string str = textBox.Text + (object)lettermdp[random.Next(0, lettermdp.Length)];
                textBox.Text = str;
            }
}


il faut que les mdp ce suivent dans l'ordre ....Et c'est pour cela que j'ai demandé de l'aide ... car je dois partir sur des fichier existant, généré avec une suite incrémentiel ...
0
Whismeril Messages postés 19020 Date d'inscription mardi 11 mars 2003 Statut Contributeur Dernière intervention 15 avril 2024 656
Modifié le 28 sept. 2018 à 18:28
Pour poster un code merci de suivre ce qui est décrit là
https://codes-sources.commentcamarche.net/faq/11288-les-balises-de-code

Je ne comprends ce que
il faut que les mdp ce suivent dans l'ordre ....
veut dire.

Et le code, que tu montres, génère de aléatoire avec doublon, or tu ne veux pas de doublon, c'est pourquoi je t'ai expliqué 2 façons de faire sans doublon.
0
Whismeril Messages postés 19020 Date d'inscription mardi 11 mars 2003 Statut Contributeur Dernière intervention 15 avril 2024 656
28 sept. 2018 à 18:36
Ha si tu modifies après que j'ai répondu, on va pas y arriver.

Donc dans ton premier message:
j'ai fait un generateur de mot de passe en c#
, le mot important c'est "J'".

Dans ta dernière modification,
car je dois partir sur des fichier existant


Si c'est toi qui a fait le générateur de mot de passe et qu'après tu fais un correcteur du résultat du générateur, ça manque de logique.

C'est pourquoi, je t'ai proposé une autre approche.

Maintenant si on te fournit un fichier et que tu dois le traiter:
  • 1 commence par ne pas dire "J'", ça évitera les méprises.
  • 2 ça ne t'empêche pas d'expliquer à ton demandeur que ça n'est pas optimisé, et que peut-être il serait plus efficient de modifier le générateur.
  • 3 si on reste dans l'idée de corriger le résultat du générateur, c'est pas un problème pour moi, cependant essaye de bien expliquer les choses, de ne pas être incohérent
0
olidebug Messages postés 6 Date d'inscription mardi 14 août 2018 Statut Membre Dernière intervention 29 septembre 2018
28 sept. 2018 à 19:46
oui, j'ai fait le générateur. Je fais le tri manuellement une fois les fichiers creer et je ne veux plus le faire, c'est trop long. J'ai des fichiers existant et je ne vais pas les refaire ... Ca demande trop de temps.
0
Whismeril Messages postés 19020 Date d'inscription mardi 11 mars 2003 Statut Contributeur Dernière intervention 15 avril 2024 656
28 sept. 2018 à 23:47
<bock>Ca demande trop de temps.</block> à mon avis moins, que corriger à postériori, mais bon.

Avec une regex (voir ce tutoriel https://lgmorand.developpez.com/dotnet/regex/ ), tu peux au choix
  • capturer tous les codes avec doublon,
    \b.*(.).*(\1).*\n
    et les remplacer par rien, voir exemple ici
    http://regexstorm.net/tester?p=%5cb.*%28.%29.*%28%5c1%29.*%5cn&i=019AA660B68D27+%0d%0a02E7A661EF4A07+%0d%0aE355FEDE6893BB%0d%0a0123456789ABCD&r=
    onglet Context
  • capturer les codes valides (la regex est plus compliquée à faire) et réecrire le fichier texte avec.

0
olidebug Messages postés 6 Date d'inscription mardi 14 août 2018 Statut Membre Dernière intervention 29 septembre 2018
29 sept. 2018 à 19:29
Merci, comme j'ai environ 48038396025285290 ligne a contôler, je prefère automatiser la chose ...
0
Whismeril Messages postés 19020 Date d'inscription mardi 11 mars 2003 Statut Contributeur Dernière intervention 15 avril 2024 656
29 sept. 2018 à 19:49
Je dois vraiment mal m'exprimer.
Bien sûr que le contrôle automatisé est extrêmement plus rapide que de le faire manuellement. C'est pas ce que j'ai dit.

Ce que j'ai dit, c'est
  • développement d'un générateur
  • + la génération de codes, qui au final ne sont pas tous bons
  • + développement d'un contrôleur automatisé
  • + contrôle

est bien plus long, que de bien faire les choses dès le départ.
0
Rejoignez-nous