Découpage d'une chaîne de caractères

Résolu
Signaler
Messages postés
59
Date d'inscription
vendredi 16 janvier 2004
Statut
Membre
Dernière intervention
1 août 2005
-
Messages postés
59
Date d'inscription
vendredi 16 janvier 2004
Statut
Membre
Dernière intervention
1 août 2005
-
Bonjour tt le monde,



J'aimerais découper une chaînes de caractères pour obtenir des mots
dans un string [] en tenant compte des espaces et des guillements.



Exemple:



string chaineAvantDecoupage = salut "ca va ?" oui "et toi"



Deviendrait après découpage:



string [] motApresDecoupage serait composé des mots



-> salut

-> ca va ?

-> oui

-> et toi



Voila le code pourri que j'ai (et qui fonctionne de temps en temps...)



/!\ CODE DEGUEULASSE EN DESSOUS /!\



private string [] CutOutWords(string keywords)

{

ArrayList listOfCriteriaSec = new ArrayList();

string [] listOfCriteria = {""};

int numberOfQuots = 0;

int positionOfFirstQuot = 0;



for (int i=0;i<keywords.Length;i++)

{

if (keywords[i] == '"')

{

numberOfQuots++;



if (numberOfQuots == 1)



positionOfFirstQuot = i;



if (numberOfQuots == 2)

{


numberOfQuots = 0;



listOfCriteriaSec.Add(keywords.Substring(positionOfFirstQuot+1,(i-positionOfFirstQuot)-1));


keywords =
keywords.Remove(positionOfFirstQuot-1,(i-positionOfFirstQuot)+2);

}


}


}



listOfCriteria = keywords.Split(' ');



int count = listOfCriteria.GetLength + listOfCriteriaSec.Count;



string [] listOfCriteriaFinale = new string[count];



for (int i=0;i<listOfCriteria.GetLength ;i++)

listOfCriteriaFinale[i] = listOfCriteria[i];



int j=0;

for (int i=listOfCriteria.GetLength ;i<count;i++)

{


listOfCriteriaFinale[i] =
listOfCriteriaSec[j].ToString();

j++;

}



return listOfCriteriaFinale;

}

}



/!\ FIN DU CODE DEGUEULASSE /!\



Voila je serais tout binauche si qqun pouvait m'aider a faire ce truc
qui m'$*@"/ au plus haut point (et si possible bcp plus cours et plus
proprement que ce qui est au-dessus)



Merci d'avance !



P.S : je m'excuse auprès des puristes de la bonne programmation !
A voir également:

2 réponses

Messages postés
3466
Date d'inscription
lundi 16 octobre 2000
Statut
Membre
Dernière intervention
30 octobre 2008
55
Sauf erreur, tu as juste a faire



string chaineAvantDecoupage = "salut "ca va ?" oui "et toi";

string[] temp = chaineAvantDecoupage.Split('"');

Et tu auras ce que tu souhaite



Pour enlever les espaces au début et a la fin des phrases, la fonction string.Trim() s'en occupe


Mx
Messages postés
59
Date d'inscription
vendredi 16 janvier 2004
Statut
Membre
Dernière intervention
1 août 2005
4
Merci bcp. Ca Marche. J'avais fais le .Split('"') au début mais je me
retrouvais avec des espaces devant les mots découpés (logique). J'ai
jamais pensé au "Trim"...



En appliquant tes bons conseils voila donc la dernière mouture :


private string [] CutOutWords(string keywords)

{

string [] listOfCriteria = keywords.Split('"');



for (int i=0;i<listOfCriteria.GetLength(0);i++)

listOfCriteria[i] = listOfCriteria[i].Trim();



return listOfCriteria;

}



Merci encore



@+