Langagec#

Résolu
macadelino Messages postés 17 Date d'inscription mercredi 25 février 2009 Statut Membre Dernière intervention 10 novembre 2009 - 25 févr. 2009 à 22:07
krimog Messages postés 1860 Date d'inscription lundi 28 novembre 2005 Statut Membre Dernière intervention 14 février 2015 - 26 févr. 2009 à 10:46
Bonsoir,
je voudrais avoir une idée sur la fonction qui renvoie la chaine P ,en ne gardant que la premiere occurence de chaque caractere. merçi beaucoup

3 réponses

RougailSaucisse Messages postés 118 Date d'inscription lundi 16 février 2009 Statut Membre Dernière intervention 6 décembre 2010 1
26 févr. 2009 à 00:48
salut, voici une solution (mais System.Linq est requis pour cela):

string PremiereOccurence(string chaine, bool invariant)
{
    return (invariant == true) ? new string(chaine.ToLowerInvariant().ToCharArray().Distinct().ToArray()) : new string(chaine.ToCharArray().Distinct().ToArray());
}

sinon de maniere plus classique et pour plus de compatibilité (et rapidité), tu n'as qu'a faire un algo simple qui parcourt chaque caractere de ta chaine (foreach), verifie si le caractere a deja ete "lu". S'il ne l'a pas été alors tu l'enregistres.
3
macadelino Messages postés 17 Date d'inscription mercredi 25 février 2009 Statut Membre Dernière intervention 10 novembre 2009
26 févr. 2009 à 09:34
Bonjour,
je suis habitué avec les boucles , car je ne suis qu'un debutant donc je ne comprends pas bien votre reponse,la deuxieme idee me semble plus simple ,je comprends mais c'est comment l'exprimer en c#.merçi
0
krimog Messages postés 1860 Date d'inscription lundi 28 novembre 2005 Statut Membre Dernière intervention 14 février 2015 50
26 févr. 2009 à 10:46
List<char> liste = new List<char>();
foreach (char c in chaine)
{
    if (!liste.Contains(c))
    {
        liste.Add(c);
    }
}

Ainsi, si ta chaine est "ceci est ma chaine", ta liste contiendra :
c
e
i
<espace>
s
t
m
a
h
n

Krimog :
while (!succeed = try()) ;
0