J'ai fais en gros ce que tu as dis Catamania. Sebmafate, je ne vois pas comment on fait pour utiliser une expression régulière en C#, pourrais tu me donner un exemple simple stp?
Sinon, voila le code que j'ai fait (si ça peut servir à quelqu'un...)
private
String[] rendLesNumDUnString(String phrase){
//prend en parametre une phrase et rend un tableau
//contenant les entiers (ou réels) qui sont dans
//cette phrase
String[] maPhrase = phrase.Split();
String[] tabResult = newString[maPhrase.Length];
//le nombre de mots dans la phrase
int nbMots = maPhrase.Length;
for (int i = 0; i < nbMots; i++)
{
String motCourant = maPhrase[i];
int tailleMotCourant = motCourant.Length;
String debutDeChiffre = "";
//parcours du mot
for (int j = 0; j < tailleMotCourant; j++)
{
String lettreCourante = motCourant.Substring(j,1);
if (unePartieDUnNombre(lettreCourante))
{
debutDeChiffre += lettreCourante;
}
else
{
//ça ne peut pas être un nombre
debutDeChiffre = "";
}
}
if (!(debutDeChiffre.Equals("")) && !(debutDeChiffre.Equals(",")) &&
!(debutDeChiffre.Equals(".")))
{
tabResult[i] = debutDeChiffre;
}
}
return tabResult;
}
(ouch, ça indente mal désolé
!)
Ainsi qu'une fonction qui permet de reconnaitre si une lettre peut faire partie d'un nombre :
privatebool unePartieDUnNombre(String lettre)
{
//prend une lettre (de type string) et rend
//vrai si cette lettre peut faire partie d'un
//nombre (un chiffre ou bien "," ou "."
if(lettre.Equals("0") || lettre.Equals("1") || lettre.Equals("2") ||
lettre.Equals("3") || lettre.Equals("4") || lettre.Equals("5") ||
lettre.Equals("6") || lettre.Equals("7") || lettre.Equals("8") ||
lettre.Equals("9") || lettre.Equals(",") || lettre.Equals(".") ||
//Pour récupérer les pourcentages aussi (à voir)
lettre.Equals("%"))
{
returntrue;
}
else
{
returnfalse;
}
}
ça fonctionne plutot bien (sauf cas particuliers pas encore traité du genre "ma chaine t12" qui rend 12 alors que t12 n'est pas un nombre). Je m'occupe des cas particuliers maintenant
Merci pour votre aide