J'ai des extraits de code HTML stockés dans une table. Pas de pages entières, pas de balises ou autres, juste un formatage de base.
Je voudrais pouvoir afficher ce Html sous forme de texte uniquement, sans mise en forme , sur une page donnée (en fait, juste les 30 à 50 premiers caractères, mais c'est le plus facile).
Comment placer le "texte" dans ce HTML dans une chaîne sous forme de texte simple?
Donc ce morceau de code.
<b>Hello World.</b><br/><p><i>Is there anyone out there?</i><p>
Devient:
Bonjour le monde. Y a-t-il quelqu'un là-bas?
Réponses:
Si vous parlez de suppression de balises, c'est relativement simple si vous n'avez pas à vous soucier de choses comme les
<script>
balises. Si tout ce que vous avez à faire est d'afficher le texte sans les balises, vous pouvez le faire avec une expression régulière:Si vous devez vous soucier des
<script>
balises et autres, vous aurez besoin de quelque chose d'un peu plus puissant que les expressions régulières car vous devez suivre l'état, quelque chose qui ressemble plus à une grammaire sans contexte (CFG). Bien que vous puissiez peut-être l'accomplir avec une correspondance «de gauche à droite» ou non gourmande.Si vous pouvez utiliser des expressions régulières, il existe de nombreuses pages Web avec de bonnes informations:
Si vous avez besoin du comportement plus complexe d'un CFG, je suggérerais d'utiliser un outil tiers, malheureusement je n'en connais pas de bon à recommander.
la source
Le HtmlAgilityPack gratuit et open source a dans l'un de ses exemples une méthode qui convertit du HTML en texte brut.
Donnez-lui une chaîne HTML comme
Et vous obtiendrez un résultat en texte brut comme:
la source
script
etstyle
balises et écrire le texte interne d'autres éléments dans la chaîne de sortie. Je doute qu'il ait passé beaucoup de tests avec des entrées du monde réel.Je ne pouvais pas utiliser HtmlAgilityPack, j'ai donc écrit une deuxième meilleure solution pour moi-même
la source
HTTPUtility.HTMLEncode()
est destiné à gérer le codage des balises HTML sous forme de chaînes. Il s'occupe de tout le travail lourd pour vous. À partir de la documentation MSDN :HTTPUtility.HTMLEncode()
méthode, détaillée ici :Usage:
la source
Pour ajouter à la réponse de vfilby, vous pouvez simplement effectuer un remplacement RegEx dans votre code; aucune nouvelle classe n'est nécessaire. Au cas où d'autres débutants comme moi tomberaient sur cette question.
Ensuite...
la source
Processus en trois étapes pour convertir du HTML en texte brut
Vous devez d'abord installer le package Nuget pour HtmlAgilityPack, puis créer cette classe
En utilisant la classe ci-dessus en référence à la réponse de Judah Himango
Troisièmement, vous devez créer l'objet de la classe ci-dessus et utiliser la
ConvertHtml(HTMLContent)
méthode pour convertir le HTML en texte brut plutôt queConvertToPlainText(string html);
la source
Il a une limitation qui ne réduit pas les longs espaces blancs en ligne, mais il est définitivement portable et respecte la mise en page comme le navigateur Web.
la source
Il n'y a pas de méthode avec le nom 'ConvertToPlainText' dans le HtmlAgilityPack mais vous pouvez convertir une chaîne html en chaîne CLEAR avec:
Cela fonctionne pour moi. MAIS JE NE TROUVE PAS DE MÉTHODE AVEC LE NOM «ConvertToPlainText» DANS «HtmlAgilityPack».
la source
Je pense que le moyen le plus simple est de créer une méthode d'extension `` chaîne '' (basée sur ce que l'utilisateur Richard a suggéré):
Ensuite, utilisez simplement cette méthode d'extension sur n'importe quelle variable 'chaîne' de votre programme:
J'utilise cette méthode d'extension pour convertir les commentaires au format HTML en texte brut afin qu'ils s'affichent correctement sur un rapport Crystal, et cela fonctionne parfaitement!
la source
Le moyen le plus simple que j'ai trouvé:
La classe HtmlFilter se trouve dans Microsoft.TeamFoundation.WorkItemTracking.Controls.dll
La dll se trouve dans un dossier comme celui-ci:% ProgramFiles% \ Common Files \ microsoft shared \ Team Foundation Server \ 14.0 \
Dans VS 2015, la dll nécessite également une référence à Microsoft.TeamFoundation.WorkItemTracking.Common.dll, situé dans le même dossier.
la source
Si vous avez des données contenant des balises HTML et que vous souhaitez les afficher pour qu'une personne puisse VOIR les balises, utilisez HttpServerUtility :: HtmlEncode.
Si vous avez des données contenant des balises HTML et que vous souhaitez que l'utilisateur voie les balises rendues, affichez le texte tel quel. Si le texte représente une page Web entière, utilisez un IFRAME pour cela.
Si vous avez des données contenant des balises HTML et que vous souhaitez supprimer les balises et afficher simplement le texte non formaté, utilisez une expression régulière.
la source
J'ai rencontré un problème similaire et j'ai trouvé la meilleure solution. Le code ci-dessous fonctionne parfaitement pour moi.
}
Les caractères d'échappement tels que \ n et \ r ont dû être supprimés en premier car ils empêchent les expressions régulières de fonctionner comme prévu.
De plus, pour que la chaîne de résultat s'affiche correctement dans la zone de texte, il peut être nécessaire de la diviser et de définir la propriété Lines de la zone de texte au lieu de l'affecter à la propriété Text.
this.txtResult.Lines = StripHTML (this.txtSource.Text) .Split ("\ r" .ToCharArray ());
Source: https://www.codeproject.com/Articles/11902/Convert-HTML-to-Plain-Text-2
la source
Cela dépend de ce que vous entendez par «html». Le cas le plus complexe serait celui des pages Web complètes. C'est également le plus simple à gérer, car vous pouvez utiliser un navigateur Web en mode texte. Consultez l'article Wikipédia répertoriant les navigateurs Web, y compris les navigateurs en mode texte. Lynx est probablement le plus connu, mais l'un des autres peut être meilleur pour vos besoins.
la source
Voici ma solution:
Exemple:
la source
J'avais la même question, juste mon html avait une mise en page simple pré-connue, comme:
J'ai donc fini par utiliser un code aussi simple:
Quelles sorties:
la source
N'a pas écrit mais une utilisation:
la source
Je pense qu'il a une réponse simple:
la source
Pour tous ceux qui recherchent une solution exacte à la question OP pour une abréviation textuelle d'un document html donné, sans nouvelles lignes ni balises HTML, veuillez trouver la solution ci-dessous.
Comme pour toute solution proposée, il y a quelques hypothèses avec le code ci-dessous:
he<span>ll</span>o
devraient être affichéshello
. Liste des balises en ligne: https://www.w3schools.com/htmL/html_blocks.aspCompte tenu de ce qui précède, l'extension de chaîne suivante avec des expressions régulières compilées produira le texte brut attendu en ce qui concerne les caractères d'échappement html et null sur une entrée nulle.
la source
chaîne statique publique StripTags2 (string html) {return html.Replace ("<", "<"). Replace (">", ">"); }
Par cela, vous évitez tous les "<" et ">" dans une chaîne. c'est ce que tu veux?
la source