- 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