Couper une chaine de caractere tous les 8 caracteres

Signaler
Messages postés
26
Date d'inscription
mercredi 6 août 2014
Statut
Membre
Dernière intervention
9 août 2014
-
Messages postés
7202
Date d'inscription
jeudi 13 septembre 2007
Statut
Contributeur
Dernière intervention
15 janvier 2021
-
Bonjour,
je suis debutant sur vb.net ,j aimerai que vous m'aideriai car j'aimerai pouvoir coupé un chaine de caractere tous les 8 caractères en les separant d'un espace. est ce possible?
merci d'avance pour votre aide :)

6 réponses

Messages postés
15393
Date d'inscription
mardi 11 mars 2003
Statut
Contributeur
Dernière intervention
16 janvier 2021
500
Message déplacé dans la catégorie VB.Net. Merci d'y faire attention la prochaine fois.
Messages postés
15393
Date d'inscription
mardi 11 mars 2003
Statut
Contributeur
Dernière intervention
16 janvier 2021
500
Bonjour avec la méthode Insert:
Dim resultat = "1234567890".Insert(8, " ")

Messages postés
7202
Date d'inscription
jeudi 13 septembre 2007
Statut
Contributeur
Dernière intervention
15 janvier 2021
118
Messages postés
15393
Date d'inscription
mardi 11 mars 2003
Statut
Contributeur
Dernière intervention
16 janvier 2021
500
On peut le faire aussi avec une Regex

Imports System.Text.RegularExpressions
....


        'déclare une regex avec 8 caractères indiférents comme patern
        Dim maRegex As New Regex(".{8}")
        'dans la chaine d'entrée, la fonction va remplacer chaque partie qui correspond au partern par le résultat de la fonction délégué                           return le texte qui correspond au patern auquel est ajouté un espace
        Dim resultat As String = maRegex.Replace("un_essai_de_texte_ou_inserer_un_espace_tous_les_8_caractères", Function(correpondanceAuPatern As Match) correpondanceAuPatern.ToString() & " ")


résultat est égal à "un_essai _de_text e_ou_ins erer_un_ espace_t ous_les_ 8_caract ères".

et pour le sujet montré par Le Pivert, il suffit de faire un split:
Dim morceauxDe8() As String = resultat.Split({" "c}) 'retourne un tableau contenant les morceaux précedement séparés par un espace

Messages postés
7202
Date d'inscription
jeudi 13 septembre 2007
Statut
Contributeur
Dernière intervention
15 janvier 2021
118
Bonjour Whismeril,

J'ai essayé ton code, l'espace n'est pas reconnu, par contre ":" est reconnu! J'ai donc contourné le problème comme ceci:

 Dim maRegex As New Regex(".{8}")
'dans la chaine d'entrée, la fonction va remplacer chaque partie qui correspond au partern par le résultat de la fonction délégué return le texte qui correspond au patern auquel est ajouté un espace
Dim resultat As String = maRegex.Replace("Laphrasequejaimeraisdécouperenpartiede8caractères", Function(correpondanceAuPatern As Match) correpondanceAuPatern.ToString() & " ")
Dim morceauxDe8() As String = resultat.Split({" "c}) 'retourne tableau contenant les morceaux précedement séparés par un espace
For i = 0 To morceauxDe8.Count - 1
TextBox1.AppendText(morceauxDe8(i) & " ")
Next i

TextBox1.AppendText(morceauxDe8(i) & " ")

Qu'en pense-tu?

Messages postés
15393
Date d'inscription
mardi 11 mars 2003
Statut
Contributeur
Dernière intervention
16 janvier 2021
500
Bonjour, qu'entends par espace non reconnu, j'ai VB express 2010 et le code tel que je l'ai présenté fonctionne (s'il y a déjà des espaces dans le string d'origine ça va cafouiller au nivaux du salit, mais il suffit alors de choisir une séquence improbable comme séparateur =*$!%£ par exemple).
Et dans le code que tu montres, tu n'utilises pas le ":"
Messages postés
7202
Date d'inscription
jeudi 13 septembre 2007
Statut
Contributeur
Dernière intervention
15 janvier 2021
118
Ce que j'entend par là:

   Dim maRegex As New Regex(".{8}")
        'dans la chaine d'entrée, la fonction va remplacer chaque partie qui correspond au partern par le résultat de la fonction délégué                           return le texte qui correspond au patern auquel est ajouté un espace
        Dim resultat As String = maRegex.Replace("Laphrasequejaimeraisdécouperenpartiede8caractères", Function(correpondanceAuPatern As Match) correpondanceAuPatern.ToString() & " ")
        Dim morceauxDe8() As String = resultat.Split({" "c}) 'retourne tableau contenant les morceaux précedement séparés par un espace
        For i = 0 To morceauxDe8.Count - 1
            TextBox1.AppendText(morceauxDe8(i))
        Next i


retourne:

Laphrasequejaimeraisdécouperenpartiede8caractères

Par contre ce code:

  Dim maRegex As New Regex(".{8}")
        'dans la chaine d'entrée, la fonction va remplacer chaque partie qui correspond au partern par le résultat de la fonction délégué                           return le texte qui correspond au patern auquel est ajouté un espace
        Dim resultat As String = maRegex.Replace("Laphrasequejaimeraisdécouperenpartiede8caractères", Function(correpondanceAuPatern As Match) correpondanceAuPatern.ToString() & "&")
        Dim morceauxDe8() As String = resultat.Split({" "c}) 'retourne tableau contenant les morceaux précedement séparés par un espace
        For i = 0 To morceauxDe8.Count - 1
            TextBox1.AppendText(morceauxDe8(i))
        Next i


retourne:

Laphrase&quejaime&raisdéco&uperenpa&rtiede8c&aractère&s

Voilà ce que j'ai!
C'est pour cela que j'en conclu que l'espace n'est pas reconnu
Messages postés
15393
Date d'inscription
mardi 11 mars 2003
Statut
Contributeur
Dernière intervention
16 janvier 2021
500
Ok, dans le premier code il n'y avait pas & "&", d'ou ma question.
Chez moi ça marche c'est étrange.
Messages postés
7202
Date d'inscription
jeudi 13 septembre 2007
Statut
Contributeur
Dernière intervention
15 janvier 2021
118
Oui c'est étrange, j'ai essayé de mettre 2 points séparés par un espace comme ceci:

". ." cela me renvoie: .. 2 points collés

Mystère et boule de gomme
Messages postés
15393
Date d'inscription
mardi 11 mars 2003
Statut
Contributeur
Dernière intervention
16 janvier 2021
500
Je suis sous XP SP3 et VS 2010 framework 4.0 et toi?
Messages postés
7202
Date d'inscription
jeudi 13 septembre 2007
Statut
Contributeur
Dernière intervention
15 janvier 2021
118
Je suis sous Windows 8.1 et Visual Basic 2010 Express avec le framework 4.0