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