Couper une chaine et la repartir en groupes

iow4 Messages postés 302 Date d'inscription samedi 22 octobre 2005 Statut Membre Dernière intervention 2 novembre 2008 - 10 avril 2006 à 19:32
iow4 Messages postés 302 Date d'inscription samedi 22 octobre 2005 Statut Membre Dernière intervention 2 novembre 2008 - 11 avril 2006 à 17:53
Bonjour,

j'ai un probleme : j'aimerais pouvoir couper une chaine de string en portions égales ( exemple : faire des groupes avec 5 caractères à chaque fois ) et placez ces x caractères dans un array pour que je puisse acceder au groupe caracteres par caracteres.
J'arrive déjà à placer le contenue d'une chaine de caracteres dans un tableau :


textBox3.Text.ToCharArray();




MessageBox.Show(textBox3.Text[1]);

Mais je n'arrive pas à grouper la chaine de caracteres en groupes de x caracteres ( x étant variable selon la matrice )

Merci d'avance

9 réponses

bernie666 Messages postés 427 Date d'inscription mercredi 1 octobre 2003 Statut Membre Dernière intervention 29 janvier 2008 1
10 avril 2006 à 21:37
Salut voici un exemple

String maChaine = "azertyuiop";
Arraylist maLst = new ArrayList();
int i=0;

while(i< maChaine.Length-2){

maLst.add(maChaine.Substring(i,2));
i=i+2;

}

//parcour de la collection
int i;
for(i=0;i<=maLst.count-1;i++){
MessageBox.show(maLst[i].toString());
}
0
iow4 Messages postés 302 Date d'inscription samedi 22 octobre 2005 Statut Membre Dernière intervention 2 novembre 2008 4
10 avril 2006 à 21:48
je test demin
merci
0
TheSaib Messages postés 2367 Date d'inscription mardi 17 avril 2001 Statut Membre Dernière intervention 26 décembre 2007 23
10 avril 2006 à 23:51
Tu peux faire çà très facilement avec les expression régulières avec le pattern ".{5}" et le split de la regex.

N'importe quel charactere 5 fois.

::|The S@ib|:: MVP C#.NET
0
iow4 Messages postés 302 Date d'inscription samedi 22 octobre 2005 Statut Membre Dernière intervention 2 novembre 2008 4
11 avril 2006 à 16:00
j'ai essayé de l'adapter pour mes besoins sa marche bien la chaine est decoupé
Mais à la fin j'ai une erreur :

L'exception System.ArgumentOutOfRangeException n'a pas été gérée
Message="L'index et la longueur doivent faire référence à un emplacement situé dans la chaîne.\r\nNom du paramètre : length"
Source="mscorlib"
ParamName="length"
...

Voici le code que j'ai essayé d'adapter pour qu'il soit dynamique :



string maChaine = textBox3.Text;



ArrayList maLst =
new
ArrayList();



int i = 0;



while (i < maChaine.Length)


{


maLst.Add(maChaine.Substring(i, textBox1.Text.Length));



MessageBox.Show(
Convert.ToString(maChaine.Substring(i, textBox1.Text.Length)));


i = i + textBox1.Text.Length;


}

textBox1.Text.Length doit representer le nombre de caractere à inclure dans un groupe
textBox3.Text represente la chaine à couper en X caracteres

Merci de m'aider
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
TheSaib Messages postés 2367 Date d'inscription mardi 17 avril 2001 Statut Membre Dernière intervention 26 décembre 2007 23
11 avril 2006 à 17:21
maLst.Add(maChaine.Substring(i, textBox1.Text.Length));
C'est cette ligne là qui n'est pas correcte. La longueur de ton substring ne peut pas etre egale à la longueur de la chaine totale si tu commences a l'index i.

::|The S@ib|:: MVP C#.NET
0
TheSaib Messages postés 2367 Date d'inscription mardi 17 avril 2001 Statut Membre Dernière intervention 26 décembre 2007 23
11 avril 2006 à 17:22
Tu n'aurais pas ce problème avec les expressions regulières.

::|The S@ib|:: MVP C#.NET
0
iow4 Messages postés 302 Date d'inscription samedi 22 octobre 2005 Statut Membre Dernière intervention 2 novembre 2008 4
11 avril 2006 à 17:26
je ne sais pas utiliser les expressions regulieres
aurais tu des exemples ?

merci
0
TheSaib Messages postés 2367 Date d'inscription mardi 17 avril 2001 Statut Membre Dernière intervention 26 décembre 2007 23
11 avril 2006 à 17:39
Regex r = new Regex(".{Talongueur}");

foreach(Match m in r.Matches(tachaineadecouper))
{
//Ton traitement sur les blocs.
}

::|The S@ib|:: MVP C#.NET
0
iow4 Messages postés 302 Date d'inscription samedi 22 octobre 2005 Statut Membre Dernière intervention 2 novembre 2008 4
11 avril 2006 à 17:53
Enfete j'aimerais coder un programme qui accepte une matrice de pérmutation à 2 lignes de longueur variable.
Donc pour faire les remplacements j'ai besoin de diviser la chaine de caractéres à permuter en groupes qui compte le même nombre de caractères que la longueur de la matrice et pouvoir accéder aux lettres de ce groupe facilement pour pouvoir les remplacer

Quel solution est la mieux adapté ?
Comment enlever l'exeption de la premiere methode ?

Merci
0
Rejoignez-nous