Découpage d'une chaîne de caractères [Résolu]

Messages postés
59
Date d'inscription
vendredi 16 janvier 2004
Dernière intervention
1 août 2005
- - Dernière réponse : systemic_anomaly
Messages postés
59
Date d'inscription
vendredi 16 janvier 2004
Dernière intervention
1 août 2005
- 24 mai 2005 à 15:38
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 !
Afficher la suite 

Votre réponse

2 réponses

Meilleure réponse
Messages postés
3489
Date d'inscription
lundi 16 octobre 2000
Dernière intervention
30 octobre 2008
3
Merci
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

Merci MorpionMx 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources a aidé 98 internautes ce mois-ci

Commenter la réponse de MorpionMx
Messages postés
59
Date d'inscription
vendredi 16 janvier 2004
Dernière intervention
1 août 2005
0
Merci
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



@+
Commenter la réponse de systemic_anomaly

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.