Decouper une chaine de caractère tous les 8 caracteres [Résolu/Fermé]

Signaler
Messages postés
30
Date d'inscription
mercredi 6 août 2014
Statut
Membre
Dernière intervention
9 août 2014
-
Whismeril
Messages postés
14427
Date d'inscription
mardi 11 mars 2003
Statut
Contributeur
Dernière intervention
3 avril 2020
-
bonjour je suis actuellement sur un logiciel de cryptage, seulement je voudrais que lorseque l'utilisateur tape un long texte dans une text box, puis clique sur un bouton. je voudrai que le texte se separe tous les "8" caracteres ... pouvais vous m'aider?
merci d'avance :)

13 réponses

Messages postés
1562
Date d'inscription
samedi 2 août 2014
Statut
Membre
Dernière intervention
13 mars 2019
199
Bonsoir,

c'est souvent prise de tête ce genre de chose, ce que je ferais, je créerais une boucle gérer par une variable qui parcourt la chaîne de caractère. Je prendrais la première lettre de la chaîne de caractère (emplacement[0]) et je la stockerais dans une autre variable, je l'incrémente et je recommence jusqu'à arrivé a la huitième (emplacement[7]), je ne sais pas si j'ai été très claire.
Messages postés
30
Date d'inscription
mercredi 6 août 2014
Statut
Membre
Dernière intervention
9 août 2014

je te remerci enormement de tous m'avoir expliquais en detail, d'avoir pris de ton temps.maleureusement je debutant sur vb.net et je n'ai pas reussi a y arriver dessus (les boucle c'est pas trop mon truc...)j'espere que quelqu'un pourra m'aider en language vb.net.
Messages postés
30
Date d'inscription
mercredi 6 août 2014
Statut
Membre
Dernière intervention
9 août 2014

Mais quand meme un grand merci de t'etre donner du mal a m'expliquer :)
Messages postés
12262
Date d'inscription
jeudi 15 mai 2008
Statut
Modérateur
Dernière intervention
5 mars 2020
2 375
Bonjour,

En VB.Net ça ne doit pas être très compliqué de boucler sur tous les caractères d'un String...

Voici comment je ferais en VBA (on ne doit pas être très loin niveau syntaxe...)

Dim monTab()
Dim monString$
Dim i&, k&

monString = "La phrase que j'aimerais découper en partie de 8 caractères"
ReDim monTab(Round(Len(monString) / 8))

For i = 1 To Len(monString) Step 8
    monTab(k) = Mid(monString, i, 8)
    k = k + 1
Next i
For i = 0 To UBound(monTab)
    Debug.Print monTab(i)
Next i

Messages postés
30
Date d'inscription
mercredi 6 août 2014
Statut
Membre
Dernière intervention
9 août 2014

je te remerccie du fond du coeur et m'excuse d'avoir créer plusieur sujet ,je n'avais pas compris pourquoi je n'arrivais pas a acceder au post , je te remerci de ta patience avec moi
pijaku
Messages postés
12262
Date d'inscription
jeudi 15 mai 2008
Statut
Modérateur
Dernière intervention
5 mars 2020
2 375
pas de souci.
Ton problème est-il résolu?
Messages postés
30
Date d'inscription
mercredi 6 août 2014
Statut
Membre
Dernière intervention
9 août 2014

en revenche pourrait tu me dire ce que veux dire round , len , mid , ubound
remy4wer
Messages postés
30
Date d'inscription
mercredi 6 août 2014
Statut
Membre
Dernière intervention
9 août 2014

desoler ,je n'aévais pas recu ta reponse au moment ou je l ai envoyer , je vais l'essayer
remy4wer
Messages postés
30
Date d'inscription
mercredi 6 août 2014
Statut
Membre
Dernière intervention
9 août 2014

ca ne marche pas, ps grave merci quand meme
remy4wer
Messages postés
30
Date d'inscription
mercredi 6 août 2014
Statut
Membre
Dernière intervention
9 août 2014

quelqu'un d'autre pourrait donc m'aider a ce sujet
pijaku
Messages postés
12262
Date d'inscription
jeudi 15 mai 2008
Statut
Modérateur
Dernière intervention
5 mars 2020
2 375
ca ne marche pas

C'est à dire???
remy4wer
Messages postés
30
Date d'inscription
mercredi 6 août 2014
Statut
Membre
Dernière intervention
9 août 2014

ya marque que le left et le right n'ont aucun parametre et leur type de retour ne sont pas indexé
Messages postés
12262
Date d'inscription
jeudi 15 mai 2008
Statut
Modérateur
Dernière intervention
5 mars 2020
2 375
En cas d'erreur dans le code, voir ce lien : https://docs.microsoft.com/fr-fr/dotnet/api/system.string.substring?redirectedfrom=MSDN&view=netframework-4.8
Dim monString$, i&, FinBoucle&

monString = TextBox1.Text
FinBoucle = Len(monString) + Len(monString) Mod 9
For i = 8 To FinBoucle Step 9
monString = monString.Substring(0, i) & "_" & monString.Substring(Len(monString) - i), i),
Next i
TextBox1.Text = monString



Whismeril
Messages postés
14427
Date d'inscription
mardi 11 mars 2003
Statut
Contributeur
Dernière intervention
3 avril 2020
498
Une petite correction qui (chez moi...) fonctionne

        Dim monString$, i&, FinBoucle&

        monString = "Laphrasequejaimeraisdécouperenpartiede8caractères"

        FinBoucle = Len(monString) + Len(monString) Mod 9
        For i = 8 To FinBoucle Step 9
            monString = monString.Substring(0, i) & "_" & monString.Substring(i) 'c'est ici, il faut prendre la fin de la chaine sans plus de calcul
        Next i
        TextBox1.Text = monString
pijaku
Messages postés
12262
Date d'inscription
jeudi 15 mai 2008
Statut
Modérateur
Dernière intervention
5 mars 2020
2 375
Salut Whismeril,

Pour tout dire, j'aime bien la version d'ucfoutu avec Split et Chr(0).
Peut on imaginer la même chose en VB.Net?

Encore un sujet à défi...
Whismeril
Messages postés
14427
Date d'inscription
mardi 11 mars 2003
Statut
Contributeur
Dernière intervention
3 avril 2020
498
Je vais regarder en détail la version d'Uc, mais dans l'autre post j'en ai de j'ai proposé un avec split
Messages postés
30
Date d'inscription
mercredi 6 août 2014
Statut
Membre
Dernière intervention
9 août 2014

c'est le bon code mais il doit y avoir une erreur de syntaxe car le logiciel me souligne ca : , i),
et me dis fin d'instruction attendu
pijaku
Messages postés
12262
Date d'inscription
jeudi 15 mai 2008
Statut
Modérateur
Dernière intervention
5 mars 2020
2 375
Dim monString$, i&, FinBoucle&

monString = TextBox1.Text
FinBoucle = Len(monString) + Len(monString) Mod 9
For i = 8 To FinBoucle Step 9
monString = monString.Substring(0, i) & "_" & monString.Substring(Len(monString) - i, i)
Next i
TextBox1.Text = monString
remy4wer
Messages postés
30
Date d'inscription
mercredi 6 août 2014
Statut
Membre
Dernière intervention
9 août 2014

MERCI il y a encore un petit probleme de code mais ce n'est pas grave je vais me debrouiller
pijaku
Messages postés
12262
Date d'inscription
jeudi 15 mai 2008
Statut
Modérateur
Dernière intervention
5 mars 2020
2 375
de rien.
Il y a certainement un petit problème, mais comme je n'ai pas VB.Net (comme quoi débuter n'est pas une excuse, je n'en avais jamais fait avant aujourd'hui, mais, comme je supprimais tous tes sujets, je me suis senti "obligé" de te filer un coup de main...) je ne peux pas tester...
Bonne continuation.
A+
remy4wer
Messages postés
30
Date d'inscription
mercredi 6 août 2014
Statut
Membre
Dernière intervention
9 août 2014

merci pour ta patience , merci pour tous
:)
Messages postés
6624
Date d'inscription
jeudi 13 septembre 2007
Statut
Contributeur
Dernière intervention
3 avril 2020
476
Bonjour,

pijaku, j'ai VB2010 et ton dernier code ne fonctionne pas. Par contre ton 1er code en vba que j'ai mis en VB.NET fonctionne.
Voici le code:

 Dim monTab() As String
        Dim monString As String
        Dim i, k As Integer

        monString = "Laphrasequejaimeraisdécouperenpartiede8caractères" 'j'ai supprimé les espaces pour la comprehension
        ReDim monTab(CInt(Math.Round(Len(monString) / 8)))

        For i = 1 To Len(monString) Step 8
            monTab(k) = Mid(monString, i, 8)
            k = k + 1
        Next i
        For i = 0 To UBound(monTab)
            TextBox1.AppendText(monTab(i) & " ")
        Next i



Bonne programmation
pijaku
Messages postés
12262
Date d'inscription
jeudi 15 mai 2008
Statut
Modérateur
Dernière intervention
5 mars 2020
2 375
Salut le pivert,

Merci de ton intervention.
J'ai tenté...

Je suis tout de même étonné que SubString ne fonctionne pas.
Peux tu nous en dire davantage, au cas ou quelqu'un lirait ce sujet un jour...

Merci encore
A+
Messages postés
6624
Date d'inscription
jeudi 13 septembre 2007
Statut
Contributeur
Dernière intervention
3 avril 2020
476
Tu as les 8 premiers caractères un tiret les 8 derniers caractères , 5 fois de suite

Voici le code :

 Dim monString As String
        Dim i, FinBoucle As Integer

        monString = "Laphrasequejaimeraisdécouperenpartiede8caractères"
        FinBoucle = Len(monString) + Len(monString) Mod 9
        For i = 8 To Len(monString) Step 9
            monString = monString.Substring(0, i) & "_" & monString.Substring(Len(monString) - i, i)
        Next i
        TextBox1.Text = monString

Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018

Bonjour,
Juste pour m'aider à refaire peu à peu surface.
Un peu de rigolade avec VBA :
toto = "Voiciunephrasequin'estpasd'unelonhueurmultipledeladécoupe.Lecodeseraitbienplussimplesimultiplededeladécoupe."
decoupe = 8
ou = Len(toto) - Len(toto) Mod decoupe
toto1 = Left(toto, ou)
flt = " " & String(decoupe, "@")
Do While Len(flt) < Len(toto1) + Len(toto) Mod decoupe
flt = flt & flt
Loop
MsgBox Trim(Format(toto1, flt) & " " & Mid(toto, ou + 1))
--
________________________
Réponse exacte ? => "REPONSE ACCEPTEE" facilitera les recherches.
Pas d'aide en ligne installée ? => ne comptez pas sur moi pour simplement répéter son contenu. Je n'interviend
Whismeril
Messages postés
14427
Date d'inscription
mardi 11 mars 2003
Statut
Contributeur
Dernière intervention
3 avril 2020
498
pijaku
Messages postés
12262
Date d'inscription
jeudi 15 mai 2008
Statut
Modérateur
Dernière intervention
5 mars 2020
2 375
Bonjour,

Ça fait plaisir de vous revoir.

Merci du coup de main, je commençais à galérer...

Bonne journée à vous
cs_Le Pivert
Messages postés
6624
Date d'inscription
jeudi 13 septembre 2007
Statut
Contributeur
Dernière intervention
3 avril 2020
476
Bonjour ucfoutu, content de te relire.

Tu as toujours des trouvailles de ton cru à nous soumettre!

Bonne journée
Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018

Bonjour, Le Pivert,
- Avant tout : ma solution était en VBA et non en .Net.
- il y a toujours mille et une manières d'aborder une difficulté. Il est vrai que j'aime les manières rigolotes
- Tiens : en voilà une autre, toujours avec VBA (et donc à transposer pour VB.Net) :
Elle est très simple :
 toto = "benvoilalaphrasequel'onvoudraitmettreenmorceauxde#decoupecaractères"
decoupe = 8 ' pour dire tous les combien découper
titi = Split(StrConv(toto, vbUnicode), Chr(0))
For i = decoupe - 1 To Len(toto) Step decoupe
titi(i) = titi(i) & " "
Next
MsgBox Join(titi, "")
Whismeril
Messages postés
14427
Date d'inscription
mardi 11 mars 2003
Statut
Contributeur
Dernière intervention
3 avril 2020
498
Alors la traduction "littérale" en VB.Net, mais ça s'optimise sûrement.
        Dim toto As String = "benvoilalaphrasequel'onvoudraitmettreenmorceauxde#decoupecaractères"
        Dim decoupe As Int16 = 8 ' pour dire tous les combien découpe
        Dim titi As String() = toto.ToCharArray().Select(Function(c) c.ToString()).ToArray() 'comme le split crée un tableau de caractères, mais on doit le convertir en string VB.net qui est plus typé que VBA n'accepte pas titi(i) = titi(i) & " " dans le cas contraire
        For i = decoupe - 1 To Len(toto) Step decoupe
            titi(i) = titi(i) & " "
        Next
        MsgBox(String.Join(" ", titi))
Whismeril
Messages postés
14427
Date d'inscription
mardi 11 mars 2003
Statut
Contributeur
Dernière intervention
3 avril 2020
498
Bonjour là avec une liste plutôt qu'un tableau.
J'évite la méthode ToCharArray et donc une boucle en faisant le Select directement sur les caractères du string (en .Net un string est déjà une sorte de tableau de string).
Mais dans l'absolue pour un texte aussi petit ça ne change pas grand chose.
        Dim decoupe As Int16 = 8 ' pour dire tous les combien découpe
        Dim titi As List(Of String) = "benvoilalaphrasequel'onvoudraitmettreenmorceauxde#decoupecaractères".Select(Function(c As Char) c.ToString()).ToList()
        For i = decoupe - 1 To titi.Count() Step decoupe
            titi(i) = titi(i) & " "
        Next
        MsgBox(String.Join(" ", titi))
Messages postés
1562
Date d'inscription
samedi 2 août 2014
Statut
Membre
Dernière intervention
13 mars 2019
199
Re,

ton post m'a donné envie de coder ^^

j'ai coder ce petit truc en python, je ne maîtrise que ce langage mais ça pourrais sûrement t'aider.

code:

source = 'exemple de contenu textuel inserer par un utilisateur lambda'

emplacement = 0
resultat = ''
boucle = 0


while emplacement < len(source):

lettre = source[emplacement]
resultat = resultat + lettre


emplacement = emplacement + 1
boucle = boucle + 1

if boucle == 8:
print(resultat)
resultat = ''

boucle = 0

if emplacement == 60 and boucle < 8:
print(resultat)
--------------------------------------------------------------------------
Quand je l'exécute ça me retourne ça:

exemple
de conte
nu textu
el inser
er par u
n utilis
ateur la
mbda