Couper une chaine de texte en 4 parties

Résolu
Secondary117 Messages postés 44 Date d'inscription lundi 28 novembre 2011 Statut Membre Dernière intervention 26 décembre 2013 - 18 avril 2013 à 14:17
Secondary117 Messages postés 44 Date d'inscription lundi 28 novembre 2011 Statut Membre Dernière intervention 26 décembre 2013 - 18 avril 2013 à 14:51
Bonjour ;D,
Dans mon projet, je crypte une chaine de texte quelconque,
et grace a la fonction "Mid()" je garde seulement les 16 premiers caractères e mon string:

Ex:
dim str as string = "11112222333344445555"
str = Mid(str, 1, (Len(str) + 16) - Len(str))

Le "résultat" de str sera donc "1111222233334444" (j'ai gardé les 16 permiers caracteres)
Mais, je veux, comme un numéro de série, couper ce string en 4 parties "égales" avec, par exemple, un tiret "-"
> "1111-2222-3333-4444"
J'ai cherché du coté Regex, split, mais je n'ai pas de réponses concrètes. C'est pour cela que je vous demande de l'aide.

Merci beaucoup,
Cordialement,
Secondary

4 réponses

Utilisateur anonyme
18 avril 2013 à 14:31
Bonjour,
Split ne sera pas applicable car il n'y a pas de séparateur
La fonction Mid() étant plutôt utilisée en VB6, en .Net nous avons ToCharArray plus efficace (je pense):
        Dim str As String = "11112222333344445555"
        str = str.ToCharArray(0, 16)
        str = str.ToCharArray(0, 4) & "-" & str.ToCharArray(4, 4) & "-" & str.ToCharArray(8, 4) & "-" & str.ToCharArray(12, 4)
        MsgBox(str)


Ou carrément:
        Dim str As String = "11112222333344445555"
        str = str.ToCharArray(0, 4) & "-" & str.ToCharArray(4, 4) & "-" & str.ToCharArray(8, 4) & "-" & str.ToCharArray(12, 4)
        MsgBox(str)


Cordialement


CF2i - Guadeloupe
Ingénierie Informatique
3
Utilisateur anonyme
18 avril 2013 à 14:47
str.ToCharArray(0, 4)

caractere 0 au caractere 4

Non, il lit du caractère 0 au caractère 3 = 4 caractères
En suite il commence du caractère 4 au chr 7 = 4 caractères toujours


Cordialement


CF2i - Guadeloupe
Ingénierie Informatique
3
Secondary117 Messages postés 44 Date d'inscription lundi 28 novembre 2011 Statut Membre Dernière intervention 26 décembre 2013 1
18 avril 2013 à 14:41
Salut acive, eh bien merci pour cette réponse claire et précise.
Il est vrai que la méthode
str = str.ToCharArray(0, 16)

Est plus simple que mon "Mid()", merci pour l'info et la réponse :D

Mais je n'ai pas trop compris son fonctionnement,

        Dim str As String = "11112222333344445555"
        str = str.ToCharArray(0, 4) & "-" & str.ToCharArray(4, 4) & "-" & str.ToCharArray(8, 4) & "-" & str.ToCharArray(12, 4)
        MsgBox(str)


str = str.ToCharArray(0, 4) & "-"
sert à "Séléctionner" le caractere 0 au caractere 4 et d'y rajouter "-"

str.ToCharArray(4, 4) & "-"
sert à "Séléctionner" le 4e caractère aux 4 prochains caractères (c'est a dire 5 6 7 8) c'est bien ça ?

Et ainsi de suite...

C'est un peu confus.. (Désolé, je suis encore en apprentissage :D)

Cordialement,
Secondary
0
Secondary117 Messages postés 44 Date d'inscription lundi 28 novembre 2011 Statut Membre Dernière intervention 26 décembre 2013 1
18 avril 2013 à 14:51
Merci pour m'avoir éclairé, j'ai compris le fonctionnement maintenant.
Et encore merci pour ta réponse plus haut, elle fonctionne a merveille.

Cordialement,
Secondary
0