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

VB.NET Discussion :

Comparer le contenu des éléments de 2 chaines.


Sujet :

VB.NET

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éprouvé Avatar de excalybur
    Homme Profil pro
    Chargé d'affaire
    Inscrit en
    Novembre 2014
    Messages
    317
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Chargé d'affaire
    Secteur : Conseil

    Informations forums :
    Inscription : Novembre 2014
    Messages : 317
    Par défaut Comparer le contenu des éléments de 2 chaines.
    Bonjour

    Mon problème est de comparer tous les éléments de 3 caractères séparé par un espace dans 2 chaines.

    Si tous les éléments de Chaine1 sont présent (même dans le désordre) dans Chaine2 alors retourner une valeur True.

    ex 1 :

    Chaine1 = "Ke1 Qc4 Rh2 Ra1 Ph5 Pg6 Pg3 Pf5 Pc6 Pb2"
    Chaine2 = "Rh2 Ra1 Ph5 Pg6 Pg3 Pf5 Pc6 Pb2 Ke1 Qc4"

    'résultat après comparaison des éléments :

    ContenuChaine=true

    ex 2 :

    Chaine1 = "Ke1 Qc4 Rh2 Ra1 Ph5 Pg6 Pg3 Pf5 Pc6 Pb2"
    Chaine2 = "Ra2 Ra1 Ph5 Pg6 Pg3 Pf5 Pc6 Pb2 Ke1 Qc4"

    'résultat après comparaison des éléments => l'élément Ra2 de chaine2 n'est pas présent dans chaine1 :

    ContenuChaine=false

    Je n'arrive pas a écrire un algorithme pour résoudre ce quiz.

    Pouvez-vous me proposer des idées.

    En vous remerciant.

    A+

  2. #2
    Inactif  

    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2012
    Messages
    4 903
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 68
    Localisation : Canada

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

    Informations forums :
    Inscription : Janvier 2012
    Messages : 4 903
    Billets dans le blog
    36
    Par défaut
    Bonjour,

    Tu SPLITtes tes deux chaînes sur l'espace, et tu as automatiquement deux tableaux de string() ====> String.split, méthode dans la recherche de la visionneuse d'aide

    Tu itères un des tableaux et tu utiliises Contains pour vérifier si ton texte se trouve dans l'autre tableau ====> String.contains, méthode dans la recherche de la visionneuse d'aide.

    Tu ajoutes 1 à un compteur si c'est là.

    Si le compteur est égal au nombre d'éléments à la fin de la boucle c'est OUI; autrement c'est NON.

  3. #3
    Membre éprouvé Avatar de excalybur
    Homme Profil pro
    Chargé d'affaire
    Inscrit en
    Novembre 2014
    Messages
    317
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Chargé d'affaire
    Secteur : Conseil

    Informations forums :
    Inscription : Novembre 2014
    Messages : 317
    Par défaut
    Merci pour la réponse.

    J'avais oublié Split.

    Je vais m'y mettre et vous tiens au courant.

  4. #4
    Membre éprouvé Avatar de excalybur
    Homme Profil pro
    Chargé d'affaire
    Inscrit en
    Novembre 2014
    Messages
    317
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Chargé d'affaire
    Secteur : Conseil

    Informations forums :
    Inscription : Novembre 2014
    Messages : 317
    Par défaut
    Bonjour

    Merci pour les tuyaux et voici le résultat.

    Dans une form mettre un bouton et copier le code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
     
    Public Class Form1
     
        Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
     
            Dim s1 As String = "Ke1 Qc4 Rh2 Ra1 Ph5 Pg6 Pg3 Pf5 Pc6 Pb2"
            Dim s2 As String = "Rh5 Rh2 Ra1 Ph5 Pg6 Zh8 Pg3 Pf5 Pc6 Pb2 Ke1 Qc4 Xc4"   ' ou "Rh2 Ra1 Ph5 Pg6 Pg3 Pf5 Pc6 Pb2 Ke1 Qc4" pour le prochain test
            Dim s3(25) As String
            Dim s4 As String = ""
            Dim s5 As String = ""
            Dim Counts1 As Integer = 0
            Dim Counts2 As Integer = 0
            Dim Counts2Compatible As Integer = 0
     
            'Compte le nombre total d'éléments des chaines s1 et s2 + Compte le nombre d'éléments de s2 présent dans s1 et les affiches un par un dans Msgbox
            For n = 0 To 15
                s4 = Mid(s1, 1 + 4 * n, 3)
                If s4 <> "" Then Counts1 = Counts1 + 1
                s5 = Mid(s2, 1 + 4 * n, 3)
                If s5 <> "" Then Counts2 = Counts2 + 1
                s3(n) = Mid(s2, 1 + 4 * n, 3)
                If s3(n) <> "" And s1.Contains(s3(n)) = True Then Counts2Compatible = Counts2Compatible + 1 : MsgBox(s3(n) + " est dans la chaine s1 : " + s1 + "  et la chaine s2 : " + s2 + Chr(13) + Chr(10) + "Compteur chaine s2 = " + Str(Counts2Compatible))
            Next n
     
      'dernier MsgBox pour vérifier si s1 et compatible avec s2
     
            If Counts1 = Counts2Compatible And Counts1 = Counts2 Then
                MsgBox("Chaines compatibles")
            ElseIf Counts1 <> Counts2Compatible Or Counts1 <> Counts2 Then
                MsgBox("Chaines non compatible")
            End If
        End Sub
    End Class
    Si l'on remplace la chaine s2 par "Rh2 Ra1 Ph5 Pg6 Pg3 Pf5 Pc6 Pb2 Ke1 Qc4" le résultat final sera "Chaines compatibles".

    CQFD !

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

Discussions similaires

  1. Acceder au contenu des éléments d'une liste
    Par benjaja dans le forum Développement Sharepoint
    Réponses: 13
    Dernier message: 18/08/2010, 16h53
  2. [RegEx] extraire des éléments d'une chaine définie en regex
    Par omman95 dans le forum Langage
    Réponses: 1
    Dernier message: 29/12/2009, 15h32
  3. Réponses: 10
    Dernier message: 20/02/2008, 11h57
  4. [RegEx] Enlever des éléments appartenant à une chaine
    Par namstou3 dans le forum Langage
    Réponses: 9
    Dernier message: 01/02/2008, 13h55
  5. [DOM] Rajouter des éléments à l’aide de chaine de caractère
    Par loic911 dans le forum Format d'échange (XML, JSON...)
    Réponses: 5
    Dernier message: 05/04/2007, 16h14

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