begin process at 2008 09 06 20:13:05
1 237 931 membres
313 nouveaux aujourd'hui
14 314 membres club

Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum.
Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

MELANGOR


Information sur la source

Catégorie :Divers Source .NET ( DotNet ) Niveau : Débutant Date de création : 01/05/2004 Vu / téléchargé: 6 174 / 248

Note :
8 / 10 - par 3 personnes
8,00 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10

Commentaire sur cette source (9)
Ajouter un commentaire et/ou une note


Description

Cttee suroce a  été  téire de  clele de  Richard Clark  (http://www.c2i.fr/code.aspx?IDCode=546),  mias comme elle étais en  C#  et  que  moi  je  prreéfe le  VB.Net  aolrs j'ai  dcédié de  la  cniterovr. Ce  prmgromae cmmoe vuos aevz semreunt du  le  vior preemt de  mnéleagr les ltertes cormpesis dnas un mot (d'au mnois 4  leretst) . Volià !  

Source

  • Private Function ChangeLesMots(ByVal Texte As String) As String
  • ' Declare un nombre aléatoire :
  • Dim nbAlea As Random = New Random
  • ' Contient les caractères de séparations de deux mots :
  • ' le "c" après chaques separateur permet la conversion en Char !
  • Dim Separateurs() As Char = New Char() {" "c, ","c, ";"c, "."c, ":"c, ControlChars.Quote, "'".ToCharArray()(0), "-"c}
  • ' On crée un tableau qui contiendra les mots :
  • Dim Tableau() As String = Texte.Split(Separateurs)
  • ' Texte que l'on renverra :
  • Dim TexteModifie As sb = New sb(Texte.Length)
  • ' Permet de controler mot à mot :
  • Dim Mot As String
  • For Each Mot In Tableau
  • ' On choisie l'operation à faire selon la taille du mot :
  • Select Case (Mot.Length)
  • Case 0
  • Exit Select
  • Case 1
  • TexteModifie.Append(Mot + " ")
  • Exit Select
  • Case 2
  • TexteModifie.Append(Mot + " ")
  • Exit Select
  • Case 3
  • TexteModifie.Append(Mot + " ")
  • Exit Select
  • Case 4
  • ' C'est le seul changement possible :
  • TexteModifie.Append(Mot.Substring(0, 1))
  • TexteModifie.Append(Mot.Substring(2, 1))
  • TexteModifie.Append(Mot.Substring(1, 1))
  • TexteModifie.Append(Mot.Substring(3, 1))
  • Exit Select
  • Case Else
  • ' Contiendra le mot melange (de taille -2 puisqu'on ne change pas les
  • ' premieres et dernieres lettres ...)
  • Dim NouveauMot() As Char = New Char(Mot.Length - 2) {}
  • ' Permet de savoir quelles lettres il nous reste...
  • Dim Liste As ArrayList = New ArrayList
  • ' On ajoute les lettres à la liste :
  • Liste.AddRange(Mot.ToCharArray(1, Mot.Length - 2))
  • ' Pour chaques positions :
  • Dim position As Integer
  • For position = 0 To (Mot.Length - 2) - 1
  • ' Retire aléatoirement une lettre :
  • Dim Enleve As Integer = nbAlea.Next(Liste.Count)
  • NouveauMot(position) = CChar(Liste(Enleve))
  • Liste.RemoveAt(Enleve)
  • Next
  • ' 1ere lettre :
  • TexteModifie.Append(Mot.Substring(0, 1))
  • ' Mot modifie :
  • For position = 0 To NouveauMot.Length - 2
  • TexteModifie.Append(NouveauMot(position), 1)
  • Next
  • ' derniere lettre :
  • TexteModifie.Append(Mot.Substring(Mot.Length - 1, 1))
  • ' Plus rapide :
  • Exit Select
  • End Select
  • TexteModifie.Append(" ")
  • Next
  • ' On retourne le texte modifie :
  • Return TexteModifie.ToString
  • End Function
Private Function ChangeLesMots(ByVal Texte As String) As String
        ' Declare un nombre aléatoire :
        Dim nbAlea As Random = New Random
        ' Contient les caractères de séparations de deux mots :
        ' le "c" après chaques separateur permet la conversion en Char !
        Dim Separateurs() As Char = New Char() {" "c, ","c, ";"c, "."c, ":"c, ControlChars.Quote, "'".ToCharArray()(0), "-"c}
        ' On crée un tableau qui contiendra les mots :
        Dim Tableau() As String = Texte.Split(Separateurs)
        ' Texte que l'on renverra :
        Dim TexteModifie As sb = New sb(Texte.Length)
        ' Permet de controler mot à mot :
        Dim Mot As String
        For Each Mot In Tableau
            ' On choisie l'operation à faire selon la taille du mot :
            Select Case (Mot.Length)
                Case 0
                    Exit Select
                Case 1
                    TexteModifie.Append(Mot + " ")
                    Exit Select
                Case 2
                    TexteModifie.Append(Mot + " ")
                    Exit Select
                Case 3
                    TexteModifie.Append(Mot + " ")
                    Exit Select
                Case 4
                    ' C'est le seul changement possible :
                    TexteModifie.Append(Mot.Substring(0, 1))
                    TexteModifie.Append(Mot.Substring(2, 1))
                    TexteModifie.Append(Mot.Substring(1, 1))
                    TexteModifie.Append(Mot.Substring(3, 1))
                    Exit Select
                Case Else
                    ' Contiendra le mot melange (de taille -2 puisqu'on ne change pas les 
                    ' premieres et dernieres lettres ...)
                    Dim NouveauMot() As Char = New Char(Mot.Length - 2) {}
                    ' Permet de savoir quelles lettres il nous reste...
                    Dim Liste As ArrayList = New ArrayList
                    ' On ajoute les lettres à la liste :
                    Liste.AddRange(Mot.ToCharArray(1, Mot.Length - 2))
                    ' Pour chaques positions :
                    Dim position As Integer
                    For position = 0 To (Mot.Length - 2) - 1
                        ' Retire aléatoirement une lettre :
                        Dim Enleve As Integer = nbAlea.Next(Liste.Count)
                        NouveauMot(position) = CChar(Liste(Enleve))
                        Liste.RemoveAt(Enleve)
                    Next
                    ' 1ere lettre :
                    TexteModifie.Append(Mot.Substring(0, 1))
                    ' Mot modifie :
                    For position = 0 To NouveauMot.Length - 2
                        TexteModifie.Append(NouveauMot(position), 1)
                    Next
                    ' derniere lettre :
                    TexteModifie.Append(Mot.Substring(Mot.Length - 1, 1))
                    ' Plus rapide :
                    Exit Select
            End Select
            TexteModifie.Append(" ")
        Next
        ' On retourne le texte modifie :
        Return TexteModifie.ToString
    End Function

Conclusion

Je voudrais savoir si il est possible de savoir quel séparateur à permis de couper le mot courant pour ensuite pouvoir mettre : TexteModifie.Append(Separateur) au lieu de TexteModifie.Append(" ")...
Pour les "Membres Club", vous pouvez télécharger directement un fichier contenu dans le zip sans télécharger le zip en entier !

Télécharger le zip

  • signaler à un administrateur
    Commentaire de Pingouin le 01/05/2004 14:16:35

    cool mais ca sert a quoi ? Si je peux me permettre cette question betement utilitariste et materialiste .

    Pingouin

  • signaler à un administrateur
    Commentaire de ZogStriP le 01/05/2004 14:22:23 administrateur CS

    Tout simplement à rien !
    C'est là l'intêret !

    MDR

  • signaler à un administrateur
    Commentaire de EBArtSoft le 01/05/2004 21:30:17 administrateur CS

    http://www.vbfrance.com/code.aspx?ID=8550

    No comment...

  • signaler à un administrateur
    Commentaire de ZogStriP le 01/05/2004 21:37:02 administrateur CS

    dsl EBArtSoft

  • signaler à un administrateur
    Commentaire de EBArtSoft le 01/05/2004 21:40:03 administrateur CS

    Y'a pas de mal, moi je l'aime bien cette source ! lol

    @+

  • signaler à un administrateur
    Commentaire de jesusonline le 01/05/2004 21:58:59 administrateur CS

    Effectivement ca sert à rien mais c'est marrant, et puis ca peut permettre d'apprendre certains trucs aux debutants.

    Par contre tu as une erreur dans le code (on dirait les traducteur automatique :p)

    donc à la place de
    ' Texte que l'on renverra :
    Dim TexteModifie As sb = New sb(Texte.Length)
    il faut mettre
    ' Texte que l'on renverra :
    Dim TexteModifie As System.Text.StringBuilder = New System.Text.StringBuilder(Texte.Length)


    sinon pour les signes de ponctuation, je ne vois pas de methode simple :( j'ai deux solutions soit on gere pour chaque separateur (vive les perf ...) soit sinon tu enregistres la position de ces caractères et tu le replace ensuite, contact moi si tu comprend pas :p

  • signaler à un administrateur
    Commentaire de ZogStriP le 01/05/2004 22:42:29 administrateur CS

    pour le sb j'ai fait un : imports sb = System.Text.StringBuilder...
    Sinon merci pour le conseil, je verrais ce que je peux faire !

  • signaler à un administrateur
    Commentaire de clementpat le 02/05/2004 11:19:15

    pas mal .

  • signaler à un administrateur
    Commentaire de azerty25 le 04/05/2004 13:10:00

    Pour l'utilité, c'est un peu pour montrer que le cerveau peut lire les mots tant que la premiere et derniere lettre son à leur place et les lettres restantes mélangées, en gros.
    Sinon, sur le screen, je vois qu'il ya un pb, l'apostrophe vers la fin n'a pas été pris

Ajouter un commentaire

Pub



Appels d'offres

CalendriCode

Septembre 2008
LMMJVSD
1234567
891011121314
15161718192021
22232425262728
2930     

Boutique

Boutique de goodies CodeS-SourceS