Ich habe HTML-Schnipsel in einer Tabelle gespeichert. Nicht ganze Seiten, keine Tags oder ähnliches, nur einfache Formatierung.
Ich möchte in der Lage sein, diesen HTML-Code nur als Text ohne Formatierung auf einer bestimmten Seite anzuzeigen (eigentlich nur die ersten 30 - 50 Zeichen, aber das ist das einfache Stück).
Wie platziere ich den "Text" in diesem HTML-Code in einer Zeichenfolge als geraden Text?
Also dieser Code.
<b>Hello World.</b><br/><p><i>Is there anyone out there?</i><p>
Wird:
Hallo Welt. Gibt es da draußen jemanden?
Antworten:
Wenn Sie über das Entfernen von Tags sprechen, ist es relativ einfach, wenn Sie sich nicht um Dinge wie
<script>
Tags kümmern müssen . Wenn Sie nur den Text ohne die Tags anzeigen müssen, können Sie dies mit einem regulären Ausdruck erreichen:Wenn Sie sich um
<script>
Tags und ähnliches kümmern müssen, benötigen Sie etwas Stärkeres als reguläre Ausdrücke, da Sie den Status verfolgen müssen, was eher einer kontextfreien Grammatik (CFG) ähnelt. Obwohl Sie dies möglicherweise mit "Left To Right" oder nicht gierigem Matching erreichen können.Wenn Sie reguläre Ausdrücke verwenden können, gibt es viele Webseiten mit guten Informationen:
Wenn Sie das komplexere Verhalten einer CFG benötigen, würde ich die Verwendung eines Tools eines Drittanbieters vorschlagen. Leider kenne ich kein gutes Tool, das ich empfehlen kann.
quelle
Das kostenlose und Open-Source- HtmlAgilityPack verfügt in einem seiner Beispiele über eine Methode, die HTML in einfachen Text konvertiert.
Füttere es wie eine HTML-Zeichenfolge
Und Sie erhalten ein einfaches Textergebnis wie:
quelle
script
und zustyle
markieren und inneren Text anderer Elemente in die Ausgabezeichenfolge zu schreiben. Ich bezweifle, dass es viele Tests mit realen Eingaben bestanden hat.Ich konnte HtmlAgilityPack nicht verwenden, daher habe ich eine zweitbeste Lösung für mich geschrieben
quelle
HTTPUtility.HTMLEncode()
soll das Codieren von HTML-Tags als Zeichenfolgen behandeln. Es kümmert sich um all das schwere Heben für Sie. Aus der MSDN-Dokumentation :HTTPUtility.HTMLEncode()
Methode, hier detailliert :Verwendung:
quelle
Um die Antwort von vfilby zu ergänzen, können Sie einfach einen RegEx-Austausch in Ihrem Code durchführen. Es sind keine neuen Klassen erforderlich. Für den Fall, dass andere Neulinge wie ich über diese Frage stolpern.
Dann...
quelle
Dreistufiger Prozess zum Konvertieren von HTML in Nur-Text
Zuerst müssen Sie das Nuget-Paket für HtmlAgilityPack installieren. Zweitens müssen Sie diese Klasse erstellen
Durch die Verwendung der obigen Klasse in Bezug auf Judah Himangos Antwort
Drittens müssen Sie das Objekt der obigen Klasse und die Verwendungsmethode
ConvertHtml(HTMLContent)
zum Konvertieren von HTML in einfachen Text anstatt erstellenConvertToPlainText(string html);
quelle
Es hat die Einschränkung, dass lange Inline-Leerzeichen nicht reduziert werden, aber es ist definitiv portabel und respektiert das Layout wie ein Webbrowser.
quelle
Es gibt keine Methode mit dem Namen 'ConvertToPlainText' im HtmlAgilityPack, aber Sie können eine HTML-Zeichenfolge in eine CLEAR-Zeichenfolge konvertieren mit:
Das funktioniert bei mir. ABER ICH FINDE KEINE METHODE MIT DEM NAMEN 'ConvertToPlainText' IN 'HtmlAgilityPack'.
quelle
Ich denke, der einfachste Weg ist, eine 'String'-Erweiterungsmethode zu erstellen (basierend auf dem, was Benutzer Richard vorgeschlagen hat):
Verwenden Sie dann einfach diese Erweiterungsmethode für eine beliebige 'String'-Variable in Ihrem Programm:
Ich verwende diese Erweiterungsmethode, um HTML-formatierte Kommentare in einfachen Text umzuwandeln, damit sie in einem Crystal Reports-Bericht korrekt angezeigt werden und perfekt funktionieren!
quelle
Der einfachste Weg, den ich gefunden habe:
Die HtmlFilter-Klasse befindet sich in Microsoft.TeamFoundation.WorkItemTracking.Controls.dll
Die DLL befindet sich in einem Ordner wie dem folgenden:% ProgramFiles% \ Common Files \ Microsoft Shared \ Team Foundation Server \ 14.0 \
In VS 2015 erfordert die DLL auch einen Verweis auf Microsoft.TeamFoundation.WorkItemTracking.Common.dll, das sich im selben Ordner befindet.
quelle
Wenn Sie Daten mit HTML-Tags haben und diese anzeigen möchten, damit eine Person die Tags sehen kann, verwenden Sie HttpServerUtility :: HtmlEncode.
Wenn Sie Daten mit HTML-Tags haben und der Benutzer die gerenderten Tags sehen soll, zeigen Sie den Text unverändert an. Wenn der Text eine gesamte Webseite darstellt, verwenden Sie einen IFRAME dafür.
Wenn Sie Daten mit HTML-Tags haben und die Tags entfernen und nur den unformatierten Text anzeigen möchten, verwenden Sie einen regulären Ausdruck.
quelle
Ich habe mich einem ähnlichen Problem gestellt und die beste Lösung gefunden. Der folgende Code funktioniert perfekt für mich.
}}
Escape-Zeichen wie \ n und \ r mussten zuerst entfernt werden, da sie dazu führen, dass reguläre Ausdrücke nicht mehr wie erwartet funktionieren.
Um die Ergebniszeichenfolge korrekt im Textfeld anzuzeigen, müssen Sie sie möglicherweise aufteilen und die Lines-Eigenschaft des Textfelds festlegen, anstatt sie der Text-Eigenschaft zuzuweisen.
this.txtResult.Lines = StripHTML (this.txtSource.Text) .Split ("\ r" .ToCharArray ());
Quelle: https://www.codeproject.com/Articles/11902/Convert-HTML-to-Plain-Text-2
quelle
Kommt darauf an, was du mit "html" meinst. Der komplexeste Fall wären vollständige Webseiten. Dies ist auch am einfachsten zu handhaben, da Sie einen Webbrowser im Textmodus verwenden können. Weitere Informationen finden Sie im Wikipedia-Artikel mit Webbrowsern, einschließlich Browsern im Textmodus. Lynx ist wahrscheinlich der bekannteste, aber einer der anderen ist möglicherweise besser für Ihre Bedürfnisse.
quelle
Hier ist meine Lösung:
Beispiel:
quelle
Ich hatte die gleiche Frage, nur mein HTML hatte ein einfaches vorbekanntes Layout, wie:
Also habe ich so einfachen Code verwendet:
Welche Ausgänge:
quelle
Nicht geschrieben, sondern eine Verwendung:
quelle
Ich denke, es hat eine einfache Antwort:
quelle
Für alle, die nach einer genauen Lösung für die OP-Frage für eine Textabkürzung eines bestimmten HTML-Dokuments ohne Zeilenumbrüche und HTML-Tags suchen, finden Sie unten die Lösung.
Wie bei jeder vorgeschlagenen Lösung gibt es einige Annahmen mit dem folgenden Code:
he<span>ll</span>o
sollten ausgegeben werdenhello
. Liste der Inline-Tags: https://www.w3schools.com/htmL/html_blocks.aspIn Anbetracht des oben Gesagten gibt die folgende Zeichenfolgenerweiterung mit kompilierten regulären Ausdrücken erwarteten Klartext in Bezug auf HTML-Escapezeichen und Null bei Null-Eingabe aus.
quelle
öffentliche statische Zeichenfolge StripTags2 (Zeichenfolge html) {return html.Replace ("<", "<"). Replace (">", ">"); }}
Auf diese Weise entkommen Sie allen "<" und ">" in einer Zeichenfolge. Ist das was du willst?
quelle