Parcourir string en partant de la fin

Résolu
Monico9385
Messages postés
279
Date d'inscription
lundi 29 mars 2004
Statut
Membre
Dernière intervention
6 août 2007
- 11 juin 2007 à 17:41
chicfrandy
Messages postés
8
Date d'inscription
mercredi 7 mars 2012
Statut
Membre
Dernière intervention
8 mars 2012
- 8 mars 2012 à 18:20
Bonjour,

j'aurai aimé savoir, s'il était possible de parcourir une string mais en partant de la fin. En effet, je voudrait récupérer dans un tableau le dernier élément de ma string avant le dernier espace. En plus clair ca donne ca :

string = toto test toto2 test2

et j'aimerai récupérer monTab[0] = test2, vu que c'est le dernier mot avant le dernier espace.

J'espère que ma question est assez claire.

Merci d'avance pour votre aide

7 réponses

cs_niky
Messages postés
168
Date d'inscription
jeudi 28 juin 2001
Statut
Membre
Dernière intervention
18 octobre 2008
7
11 juin 2007 à 17:51
Salut,

Pour récupérer le dernier mot, il te faut récupérer l'indice du dernier espace :

string chaine = "toto test toto2 test2"; // La chaîne où on recherche le dernier mot
int indiceEspace = chaine.LastIndexOf(' '); // Recherche l'indice du dernier espace (renvoie -1 s'il n'y a pas d'espace)
monTab[0] = chaine.Substring(indiceEspace + 1); // Récupère la sous-chaîne qui commence à partir de indiceEspace + 1

Sinon, pour parcourir une chaîne à l'envers tu peux le faire en récupérant le tableau de caractères :
char[] caracteres = chaine.ToCharArray();
for (int i = caracteres.Length - 1; i >= 0; i--)
{
    char c = caracteres[i];
    // ... utiliser le caractère c...
}

J'espère que ça t'aura aidé.
2
Monico9385
Messages postés
279
Date d'inscription
lundi 29 mars 2004
Statut
Membre
Dernière intervention
6 août 2007

11 juin 2007 à 18:01
Merci beaucoup, je vais essayer ca !
0
Lutinore
Messages postés
3246
Date d'inscription
lundi 25 avril 2005
Statut
Membre
Dernière intervention
27 octobre 2012
42
11 juin 2007 à 19:20
Salut,

niky >> inutile de copier la chaine vers un tableau de caractères.. tu peux directement indexer la chaine :

char c = machaine[ i ];
0
cs_Bidou
Messages postés
5487
Date d'inscription
dimanche 4 août 2002
Statut
Membre
Dernière intervention
20 juin 2013
59
11 juin 2007 à 19:22
Salut,
Des solutions, y'en a pleins!
En voici quelques unes :

// 1
string chaine =
"toto test toto2 test2";

string[] res = chaine.Split(
' ');

string result1 = res[res.Length - 1];

// 2
string result2 = chaine.Substring(chaine.LastIndexOf(
' '));

// 3
StringBuilder sb =
new
StringBuilder();

for(
int i=chaine.Length - 1; i>0; i--)
{
  
if(chaine[i] ==
' ')
break;
   sb.Insert(0, chaine[i]);
}

string result3 = sb.ToString();

// 4
string result4 =
Regex.Match(chaine,
@"\s*(\w+)\s*$").Groups[0].Value;

Je te les ai mise par ordre de rapidité.
Le split sur le tableau est donc le plus rapide

<hr />
-Blog-
0

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

Posez votre question
Lutinore
Messages postés
3246
Date d'inscription
lundi 25 avril 2005
Statut
Membre
Dernière intervention
27 octobre 2012
42
11 juin 2007 à 19:28
Bon alors en voillà une autre.

string[ ] tab = "toto test toto2 test2".Split( ' ' );
Array.Reverse( tab );
0
Monico9385
Messages postés
279
Date d'inscription
lundi 29 mars 2004
Statut
Membre
Dernière intervention
6 août 2007

11 juin 2007 à 19:28
Ah ok, je n'ai que l'embarras du choix alors.
Merci beaucoup pour vos aides en tout cas
0
chicfrandy
Messages postés
8
Date d'inscription
mercredi 7 mars 2012
Statut
Membre
Dernière intervention
8 mars 2012

8 mars 2012 à 18:20
bonjour deja merci pour vos aide.
onsole.Write("Tapez votre code : ");
String Code = Console.ReadLine();
Console.ReadLine();

for (int i = 0; i < Code.Length; i++)
{
if (i.ToString == "")
Console.WriteLine("entrer ton code sans espace ");
{

Console.WriteLine("bon choix");

}

}
je veux tester un code sans espace mais ca me donne une erreur aider moi svp.
0