Comme énoncé dans le titre nous nous servons des Regex pour effectuer ces opérations:
Imports System.Text.RegularExpressions
'couper le texte tout les x mots
Private Sub coupertexte(ByVal chaine As String, ByVal x As Integer, ByVal text As TextBox)
Dim i, countword, y As Integer
Dim chtword() As String = chaine.Split("".ToCharArray)
countword = chtword.Length 'nombre de mots dans la chaine
If x = 0 Or x > countword Then Exit Sub
y = x 'nombre de mots pour ajout separateur
' On crée un Regex
Dim R As New Regex("\s*\s* ")
' décomposition de ligne en champs
Dim Nom As String() = R.Split(chaine)
For i = 0 To Nom.Count - 1
text.AppendText(CStr(Nom(i).ToString & " ")) 'ajpoute un espace entre chaque mot
If i = x Then
text.AppendText("_ ") 'ajoute le séparateur "_" tout les x mots pour retour à la ligne
x = x + y
End If
If i = countword Then
Exit For
End If
Next
afficher_texte(text)
End Sub
'mettre le texte sur x lignes
Private Sub nombreligne(ByVal chaine As String, ByVal x As Integer, ByVal text As TextBox)
Dim i, countword, y As Integer
Dim chtword() As String = chaine.Split("".ToCharArray)
countword = chtword.Length 'nombre de mots dans la chaine
If x = 0 Or x > countword Then Exit Sub
y = CInt(countword / x) 'nombre de mots pour ajout separateur
x = y 'nombre de mots pour separateur
' On crée un Regex
Dim R As New Regex("\s*\s* ")
' décomposition de ligne en champs
Dim Nom As String() = R.Split(chaine)
For i = 0 To Nom.Count - 1
text.AppendText(CStr(Nom(i).ToString & " ")) 'ajpoute un espace entre chaque mot
If i = y Then
text.AppendText("_ ") 'ajoute le séparateur "_" tout les x mots pour retour à la ligne
y = y + x
End If
If i = countword Then
Exit For
End If
Next
afficher_texte(text)
End Sub
'couper le texte tout les x caracteres
Private Sub coupercaractere(ByVal chaine As String, ByVal x As Integer, ByVal text As TextBox)
Dim a, i, countcaract As Integer
countcaract = chaine.Length 'nombre de caracteres dans la chaine
If x = 0 Or x > countcaract Then Exit Sub
For i = x To chaine.Count - 1 Step x
a = (InStr(i, chaine, " ")) 'chercher l'espace le plus près
chaine = (chaine.Insert(a, "_ "))
Next
text.AppendText(chaine)
afficher_texte(text)
End Sub
Private Sub afficher_texte(ByVal text As TextBox)
' On crée un Regex
Dim R As New Regex("\s*\s*_ ")
' décomposition de ligne en champs
Dim Nom As String() = R.Split(text.Text)
Dim myText As String = String.Join(ControlChars.CrLf, Nom)
text.Text = myText
End Sub
End Sub
Il faut avoir une TextBox multiligne.
Pour appeler:
Dim str As String = "Les Regex sont un outil (ou plutôt un système) très puissant permettant de vérifier la syntaxe d'une chaîne de caractères. Plus précisément, c'est vérifier que la chaîne de caractères à examiner respecte un motif ou une série de motifs (notre Regex) désignant la syntaxe attendue de la phrase. "
coupertexte(str, 10, TextBox1) 'couper le texte tout les x mots (chaine, nbre mots, TextBox)TextBox multiligne
nombreligne(str, 5, TextBox1) 'mettre le texte sur x lignes (chaine, nbre lignes, TextBox)TextBox multiligne
coupercaractere(str, 60, TextBox1) 'mettre le texte sur x caracteres sans couper de mot (chaine, nbre caractères, TextBox)TextBox multiligne
J'ai fait ce snippet à la suite de ce post:
http://www.commentcamarche.net/forum/affich-30662810-insere-un-element-au-milieux-d-une-chaine-de-caracteres#p30689410
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.