Melangor

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 / Exemple :


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(" ")...

Codes Sources

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.