Comparaison d'une chaine string et d'un texte html [Résolu]

-
Bonjour,
________________________________________________________________
pour faire simple, je souhaite comparer, le titre d'une page html à une chaine (string) pour identifier la bonne page html.
________________________________________________________________
Voici la première partie à comparer dans la page html :
(<title>Box - Authentification</title>)
et la deuxième dans le programme en c#:
("Box - Authentification").
________________________________________________________________
Variables utilisées:
-
string leTitre = this.webBrowser1.DocumentTitle;

-
string maChaine = "Box - Authentification"; 

________________________________________________________________
J'ai utilisé les codes suivants qui ne trouvent pas l'égalité:
1 -
if (maChaine == leTitre)
...
2 -
if (maChaine.Equals(leTitre))
...
________________________________________________________________
Pour information:
- j'ai identifié la page par un autre moyen qui fonctionne.
- j'ai tenté, au cas ou,
string leTitre = this.webBrowser1.DocumentTitle.ToString();

- la bonne page est bien chargée dans webBrowser1 avec le bon titre au moment de la comparaison.
- les deux chaines ont le même nombre de caractères soit 22.
- en utilisant la méthode string.split et un delimiteur égal à "space" j'obtiens deux mots: (Box) et (- Authentification), le deuxième espace est donc mal identifié à cause de l'interprétation du Non-breaking space ...
________________________________________________________________

Merci pour vos idées à résoudre le problème et non à le contourner. :)
________________________________________________________________
Afficher la suite 

3 réponses

Messages postés
13451
Date d'inscription
mardi 11 mars 2003
Statut
Contributeur
Dernière intervention
26 juin 2019
280
0
Merci
Bonjour, plusieurs idée en vrac:
  • Un replace de l'espace insécable en espace normal (je ne sais pas si c'est faisable, je suppose qu'il faut le bon code ascii)
  • Une regex
  • les strings étant un tableau de char, comparaison char par char avec gestion spécifique des espaces.


Par contre là dans ton message on ne voit pas le sigle & n b s p ;
Car le site l'interprête directement, est il bien présent dans ta ligne de titre?

Modérer m'amène à intervenir dans de nombreux posts, mais les seuls langages que je connaisses sont le C# et un peu de VB. Pour vos codes pensez à la coloration.
Réponse trouvée ->Question Résolue
Commenter la réponse de Whismeril
0
Merci
Merci pour la réponse ultra rapide.

Effectivement, pour le & n b s p, je m'en suis aperçu pour la fin du message et j'ai oublié le haut. En html cela ressemble à cela : <title>Box - & n b s p;Authentification</title> .

Pour la méthode du replace, j'y ai pensé mais non testé en attente d'une solution plus simple. Je comptais, même, ne garder que les caractères (sans espace ni autre chose) pour les deux chaines et ensuite les comparer.

Je ne connaissais pas la regex, à voir si cela peut apporter quelque chose.

Pour la comparaison char par char avec gestion spécifique des espaces, je vais approfondir si les deux méthodes du haut n'aboutissent pas.

Je m'y attelle au plus vite...
> Whismeril
Messages postés
13451
Date d'inscription
mardi 11 mars 2003
Statut
Contributeur
Dernière intervention
26 juin 2019
-
:)

Tout dépend du niveau de celui qui pose la question et qui ignore pas mal de chose sur les instructions en C#.

Vu d'ici cela est effectivement très simple.
> Whismeril
Messages postés
13451
Date d'inscription
mardi 11 mars 2003
Statut
Contributeur
Dernière intervention
26 juin 2019
-
Le mot de la fin a été pour Whismeril.
Effectivement le code ci-dessous fonctionne parfaitement:

string maChaine = this.webBrowser1.DocumentTitle.Replace(Convert.ToChar(160).ToString()," "); 


Merci pour la réactivité et surtout l'efficacité.

@++.
Whismeril
Messages postés
13451
Date d'inscription
mardi 11 mars 2003
Statut
Contributeur
Dernière intervention
26 juin 2019
280 > Gaouenn -
De rien

Le plus dûr a été de trouver le char(160), mais google a été mon ami....
Whismeril
Messages postés
13451
Date d'inscription
mardi 11 mars 2003
Statut
Contributeur
Dernière intervention
26 juin 2019
280 > Whismeril
Messages postés
13451
Date d'inscription
mardi 11 mars 2003
Statut
Contributeur
Dernière intervention
26 juin 2019
-
Pense à mettre le sujet résolu.
> Whismeril
Messages postés
13451
Date d'inscription
mardi 11 mars 2003
Statut
Contributeur
Dernière intervention
26 juin 2019
-
Je le fais de suite...
Commenter la réponse de Gaouenn
Messages postés
219
Date d'inscription
mercredi 26 octobre 2011
Statut
Membre
Dernière intervention
22 juin 2017
8
0
Merci
Bonjour,

peut'être comme ca ?


using System.Web;

...
...
...

string leTitre = this.webBrowser1.DocumentTitle;
            string maChaine = "Box - Authentification";
            if (HttpUtility.HtmlDecode(leTitre.Trim()).Equals(maChaine.Trim(), StringComparison.CurrentCultureIgnoreCase)) {
            .....
            }




Bonne journée
Merci,

je vais essayer également. Encore une méthode que je ne connaissais pas.
Je viens de tenter la méthode Trim() mais elle n'a pas pu résoudre mon problème.

Merci pour l'aide, cependant.

@++
Commenter la réponse de cgandco