Parcourir string en partant de la fin [Résolu]

Monico9385 279 Messages postés lundi 29 mars 2004Date d'inscription 6 août 2007 Dernière intervention - 11 juin 2007 à 17:41 - Dernière réponse : chicfrandy 8 Messages postés mercredi 7 mars 2012Date d'inscription 8 mars 2012 Dernière intervention
- 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
Afficher la suite 

7 réponses

Répondre au sujet
cs_niky 168 Messages postés jeudi 28 juin 2001Date d'inscription 18 octobre 2008 Dernière intervention - 11 juin 2007 à 17:51
+1
Utile
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é.
Cette réponse vous a-t-elle aidé ?  
Commenter la réponse de cs_niky
Monico9385 279 Messages postés lundi 29 mars 2004Date d'inscription 6 août 2007 Dernière intervention - 11 juin 2007 à 18:01
0
Utile
Merci beaucoup, je vais essayer ca !
Commenter la réponse de Monico9385
Lutinore 3248 Messages postés lundi 25 avril 2005Date d'inscription 27 octobre 2012 Dernière intervention - 11 juin 2007 à 19:20
0
Utile
Salut,

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

char c = machaine[ i ];
Commenter la réponse de Lutinore
cs_Bidou 5507 Messages postés dimanche 4 août 2002Date d'inscription 20 juin 2013 Dernière intervention - 11 juin 2007 à 19:22
0
Utile
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-
Commenter la réponse de cs_Bidou
Lutinore 3248 Messages postés lundi 25 avril 2005Date d'inscription 27 octobre 2012 Dernière intervention - 11 juin 2007 à 19:28
0
Utile
Bon alors en voillà une autre.

string[ ] tab = "toto test toto2 test2".Split( ' ' );
Array.Reverse( tab );
Commenter la réponse de Lutinore
Monico9385 279 Messages postés lundi 29 mars 2004Date d'inscription 6 août 2007 Dernière intervention - 11 juin 2007 à 19:28
0
Utile
Ah ok, je n'ai que l'embarras du choix alors.
Merci beaucoup pour vos aides en tout cas
Commenter la réponse de Monico9385
chicfrandy 8 Messages postés mercredi 7 mars 2012Date d'inscription 8 mars 2012 Dernière intervention - 8 mars 2012 à 18:20
0
Utile
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.
Commenter la réponse de chicfrandy

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.