Comparaison d'une chaine string et d'un texte html

Résolu
Gaouenn - Modifié par Gaouenn le 19/05/2015 à 13:35
 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. :)
________________________________________________________________

3 réponses

Whismeril Messages postés 17805 Date d'inscription mardi 11 mars 2003 Statut Contributeur Dernière intervention 27 septembre 2022 618
Modifié par Whismeril le 19/05/2015 à 13:58
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
0
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...
0
Whismeril Messages postés 17805 Date d'inscription mardi 11 mars 2003 Statut Contributeur Dernière intervention 27 septembre 2022 618
Modifié par Whismeril le 19/05/2015 à 14:51
Pour la méthode du replace, j'y ai pensé mais non testé en attente d'une solution plus simple


heu y'a difficilement plus simple
string leTitre = this.webBrowser1.DocumentTitle.Replace(Convert.ToChar(160).ToString()," ");
0
Gaouenn > Whismeril Messages postés 17805 Date d'inscription mardi 11 mars 2003 Statut Contributeur Dernière intervention 27 septembre 2022
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.
0
Gaouenn > Whismeril Messages postés 17805 Date d'inscription mardi 11 mars 2003 Statut Contributeur Dernière intervention 27 septembre 2022
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é.

@++.
0
Whismeril Messages postés 17805 Date d'inscription mardi 11 mars 2003 Statut Contributeur Dernière intervention 27 septembre 2022 618 > 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....
0
Whismeril Messages postés 17805 Date d'inscription mardi 11 mars 2003 Statut Contributeur Dernière intervention 27 septembre 2022 618 > Whismeril Messages postés 17805 Date d'inscription mardi 11 mars 2003 Statut Contributeur Dernière intervention 27 septembre 2022
19 mai 2015 à 15:41
Pense à mettre le sujet résolu.
0
cgandco Messages postés 219 Date d'inscription mercredi 26 octobre 2011 Statut Membre Dernière intervention 22 juin 2017 9
19 mai 2015 à 14:44
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
0
Merci,

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

Merci pour l'aide, cependant.

@++
0