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

Gaouenn - 19 mai 2015 à 13:22 - Dernière réponse :  Gaouenn
- 19 mai 2015 à 15:43
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 

Votre réponse

11 réponses

Whismeril 11548 Messages postés mardi 11 mars 2003Date d'inscriptionContributeurStatut 25 mai 2018 Dernière intervention - Modifié par Whismeril le 19/05/2015 à 13:58
0
Utile
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
Utile
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...
Gaouenn > Whismeril 11548 Messages postés mardi 11 mars 2003Date d'inscriptionContributeurStatut 25 mai 2018 Dernière intervention - 19 mai 2015 à 14:54
:)

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.
Gaouenn > Whismeril 11548 Messages postés mardi 11 mars 2003Date d'inscriptionContributeurStatut 25 mai 2018 Dernière intervention - 19 mai 2015 à 15:33
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 11548 Messages postés mardi 11 mars 2003Date d'inscriptionContributeurStatut 25 mai 2018 Dernière intervention > Gaouenn - 19 mai 2015 à 15:40
De rien

Le plus dûr a été de trouver le char(160), mais google a été mon ami....
Whismeril 11548 Messages postés mardi 11 mars 2003Date d'inscriptionContributeurStatut 25 mai 2018 Dernière intervention > Whismeril 11548 Messages postés mardi 11 mars 2003Date d'inscriptionContributeurStatut 25 mai 2018 Dernière intervention - 19 mai 2015 à 15:41
Pense à mettre le sujet résolu.
Gaouenn > Whismeril 11548 Messages postés mardi 11 mars 2003Date d'inscriptionContributeurStatut 25 mai 2018 Dernière intervention - 19 mai 2015 à 15:43
Je le fais de suite...
Commenter la réponse de Gaouenn
cgandco 219 Messages postés mercredi 26 octobre 2011Date d'inscription 22 juin 2017 Dernière intervention - 19 mai 2015 à 14:44
0
Utile
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

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.