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 :

[C#] Tester dernier caractere d'un string


Sujet :

C#

  1. #1
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2009
    Messages
    21
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2009
    Messages : 21
    Par défaut [C#] Tester dernier caractere d'un string
    Bonsoir,

    voila j'ai un probleme en C#, je récupérer des caractères sur une liaison RS232 quand la transmission est fini le dernier caractère est un retour chariot (\r\n).
    J'aimerai pouvoir tester sa sachant que je stock mes infos dans un string et que ce que j'ai ai du genre Cursor: 47,48,49,-47,-48,-49\r\n

    Comment tester ce dernier caractere?

    Merci d'avance

  2. #2
    Membre averti
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    62
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 62
    Par défaut
    bonjour.

    Bon ya surement plus simple mais tu peux faire :

    string ta_chaine
    char[] tmp

    tmp = ta_chaine.tochararray()
    if (tmp[tmp.length] == '\n')

    ...

    enfin un truk du genre, j'ai pas testé

    edit : pi etre bien : length-1 du coup, à voir !

  3. #3
    Membre expérimenté
    Inscrit en
    Octobre 2007
    Messages
    236
    Détails du profil
    Informations personnelles :
    Âge : 46

    Informations forums :
    Inscription : Octobre 2007
    Messages : 236
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
                string s = "dmslfkjqsdlkfj\r\n";
                if (s[s.Length - 1] == '\n') {
                    Console.WriteLine("Oui");
                } else {
                    Console.WriteLine("Non");
                }

  4. #4
    Membre chevronné
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    388
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2009
    Messages : 388
    Par défaut
    Citation Envoyé par emmr.rida Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
                string s = "dmslfkjqsdlkfj\r\n";
                if (s[s.Length - 1] == '\n') {
                    Console.WriteLine("Oui");
                } else {
                    Console.WriteLine("Non");
                }
    Utilise Environment.NewLine:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
                string s = "dmslfkjqsdlkfj\r\n";
                if (s[s.Length - 1] == Environment.NewLine) {
                    Console.WriteLine("Oui");
                } else {
                    Console.WriteLine("Non");
                }

  5. #5
    Membre expérimenté
    Inscrit en
    Octobre 2007
    Messages
    236
    Détails du profil
    Informations personnelles :
    Âge : 46

    Informations forums :
    Inscription : Octobre 2007
    Messages : 236
    Par défaut
    Citation Envoyé par cyril73 Voir le message
    Bonsoir,

    voila j'ai un probleme en C#, je récupérer des caractères sur une liaison RS232 quand la transmission est fini le dernier caractère est un retour chariot (\r\n).
    J'aimerai pouvoir tester sa sachant que je stock mes infos dans un string et que ce que j'ai ai du genre Cursor: 47,48,49,-47,-48,-49\r\n

    Comment tester ce dernier caractere?

    Merci d'avance
    J'ai juste répondu à la question.

  6. #6
    Membre chevronné
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    388
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2009
    Messages : 388
    Par défaut
    Oui mais il considere que:

    le dernier caractère est un retour chariot (\r\n).
    Donc Environment.NewLine

  7. #7
    Membre expérimenté
    Inscrit en
    Octobre 2007
    Messages
    236
    Détails du profil
    Informations personnelles :
    Âge : 46

    Informations forums :
    Inscription : Octobre 2007
    Messages : 236
    Par défaut
    Oui, c'est vrai
    Dans ce cas il vaut mieux corriger le code en :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
                string s = "dklfmjqsdmlkfjsd\r\n";
                if(s.IndexOf(Environment.NewLine) == (s.Length - Environment.NewLine.Length)) {
                    Console.WriteLine("Oui");
                } else {
                    Console.WriteLine("Non");
                }
    Car Environment.NewLine est une string et non un char.

  8. #8
    Membre Expert Avatar de Guulh
    Homme Profil pro
    Inscrit en
    Septembre 2007
    Messages
    2 160
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Septembre 2007
    Messages : 2 160
    Par défaut
    Environment.NewLine est utile pour connaître le caractère de fin de ligne de l'environnement courant, c'est à dire de celui de l'OS sur lequel tourne le framework.

    Ici, ce sont des données qui viennent d'une autre machine : il semble que sur cette machine distante, le retour chariot soit \r\n, mais rien ne garantit que ce soit le cas sur la machine sur laquelle tourne notre programme.

    Donc dans ce cas précis, vaut mieux rester sur \r\n.

    Et tant qu'on y est : string a une méthode EndsWith, qui fait déjà tout le boulot

  9. #9
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2009
    Messages
    21
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2009
    Messages : 21
    Par défaut
    merci de vos reponse je vais tester tout sa.

    EDIT: je prend la méthode
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
                string s = "dmslfkjqsdlkfj\r\n";
                if (s[s.Length - 1] == '\n') {
                    Console.WriteLine("Oui");
                } else {
                    Console.WriteLine("Non");
                }
    marche niquel merci

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

Discussions similaires

  1. Réponses: 6
    Dernier message: 27/01/2011, 15h49
  2. [VBA-E] trouver caractere dans un string
    Par gigs dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 05/04/2006, 14h12
  3. Suppression du 1er et dernier caractere
    Par ekinoxe dans le forum ASP
    Réponses: 4
    Dernier message: 01/02/2006, 15h44
  4. Effacer dernier caractere d'un memo ?
    Par EssaiEncore dans le forum Composants VCL
    Réponses: 4
    Dernier message: 01/12/2005, 15h13
  5. éliminer un caractere d'un string
    Par no-vice dans le forum Langage
    Réponses: 5
    Dernier message: 09/08/2002, 14h55

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