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

systemic_anomaly 59 Messages postés vendredi 16 janvier 2004Date d'inscription 1 août 2005 Dernière intervention - 24 mai 2005 à 14:49 - Dernière réponse : systemic_anomaly 59 Messages postés vendredi 16 janvier 2004Date d'inscription 1 août 2005 Dernière intervention
- 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
MorpionMx 3489 Messages postés lundi 16 octobre 2000Date d'inscription 30 octobre 2008 Dernière intervention - 24 mai 2005 à 15:16
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

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 74 internautes ce mois-ci

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