IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C# Discussion :

Chercher un caratere precis dans une string [Débutant]


Sujet :

C#

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Candidat au Club
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2019
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2019
    Messages : 2
    Par défaut Chercher un caratere precis dans une string
    Bonjour,

    Tout d'abord je me présente etant donné que c'est mon premier message : Je m'appelle isaac, je developpe des logiciels dans le domaine industrielle (les entreprises ne laisse pas de marge de manoeuvre et impose trop souvent leur choix sans laisser notre créativité en liberté d'ou le developpement sur mon temps libre).

    Ma question est simple : je cherche a recuperer un caratère bien precis dans une string, exemple un point virgule ';' et d'en compter le nombre. j'en ai besoin afin d'effectuer ma boucle.
    exemple : xxxx;xxxxxx;xxxx;xxxxxx;xxxxxx;
    language : c#
    Merci

  2. #2
    Expert confirmé
    Homme Profil pro
    Responsable Données
    Inscrit en
    Janvier 2009
    Messages
    5 439
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Responsable Données

    Informations forums :
    Inscription : Janvier 2009
    Messages : 5 439
    Par défaut
    Bonjour,
    Si le but est juste de connaitre le nombre d'occurrence:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    string myString = "xxxx;xxxxxx;xxxx;xxxxxx;xxxxxx";
    Console.WriteLine(myString.Split(';').Length - 1);
    Mais si tu veux boucler sur les "éléments", tu peux directement faire un foreach:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    string myString = "xxxx;xxxxxx;xxxx;xxxxxx;xxxxxx";
    foreach(var substring in myString.Split(';'))
    {
    ...
    }
    Tatayo.

  3. #3
    Membre Expert
    Homme Profil pro
    edi
    Inscrit en
    Juin 2007
    Messages
    941
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : edi

    Informations forums :
    Inscription : Juin 2007
    Messages : 941
    Par défaut
    Une string est un IEnumerable<char>, pas besoin de passer par string.Split().

    Avec une boucle :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    string s = "xxxx;xxxxxx;xxxx;xxxxxx;xxxxxx";
    int count = 0;
    foreach (char c in s)
        if (c == ';')
            ++count;
    Avec LinQ :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    string s = "xxxx;xxxxxx;xxxx;xxxxxx;xxxxxx";
    int count = s.Count(c => c == ';');

  4. #4
    Candidat au Club
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2019
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2019
    Messages : 2
    Par défaut
    Merci pour vous deux reponse!
    Pour ma part j'ai utiliser split (et ça marche), d'ailleurs je continue de l'utiliser pour d'autre chose et la fonction SPLIT c'est la vie! je ne le connaissais pas

    Merciiiiii a vous deux

  5. #5
    Membre Expert
    Homme Profil pro
    edi
    Inscrit en
    Juin 2007
    Messages
    941
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : edi

    Informations forums :
    Inscription : Juin 2007
    Messages : 941
    Par défaut
    Certes ça marche, mais pour ce que tu cherches à faire c'est quand même tuer une mouche au lance-roquette. La fonction string.Split() elle-même va parcourir la chaîne pour rechercher le séparateur afin de créer le tableau de résultats et il y a un paquet de traitements effectués pour extraire les sous-chaînes (code source).

    L'approche la plus performante sera avec un tout bête for (même le foreach implique un surcoût du à la gestion de l'énumérateur) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    string s = "xxxx;xxxxxx;xxxx;xxxxxx;xxxxxx";
    int count = 0;
    for(int i = 0; i < s.Length; ++i) if(s[i] == ';') ++count;
    L'approche la plus lisible sera la deuxième que je t'ai donnée avec la Count. Tu peux même avoir le meilleur des deux mondes en te faisant une méthode d'extension personnelle.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    public static class CustomStringExtensions
    {
      int public static CountChar(this string source, char candidate)
      {
        if(source == null) throw new ArgumentNullException(nameof(source));
        int count = 0;
        for(int i = 0; i < s.Length; ++i) if(s[i] == candidate) ++count;
        return count;
      }
    }
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    string s = "xxxx;xxxxxx;xxxx;xxxxxx;xxxxxx";
    int count = s.CountChar(';');
    Par contre string.Split() redevient pertinente si tu recherches non pas un caractère mais une chaîne dans ta chaîne d'origine.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. chercher un format specific dans une ligne string
    Par virtuadrack dans le forum C++
    Réponses: 1
    Dernier message: 09/09/2008, 00h38
  2. [C#]Comment executer du code qui se trouve dans une string ?
    Par freddyboy dans le forum Windows Forms
    Réponses: 4
    Dernier message: 28/02/2005, 16h31
  3. mettre un entier dans une string
    Par kinder29 dans le forum SL & STL
    Réponses: 14
    Dernier message: 14/02/2005, 11h54
  4. [DOM] sauver dans une String
    Par hocinema dans le forum Format d'échange (XML, JSON...)
    Réponses: 3
    Dernier message: 28/09/2004, 21h44
  5. [Syntaxe] mettre des ' dans une string ?
    Par souch dans le forum Débuter
    Réponses: 4
    Dernier message: 14/08/2003, 16h26

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo