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
A voir également:

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 41
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 61
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 41
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
Rejoignez-nous