Couper un texte tous les x mots, les x caracteres ou en x lignes

Soyez le premier à donner votre avis sur cette source.

Snippet vu 4 824 fois - Téléchargée 21 fois

Contenu du snippet

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

A voir également

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.