Hallo,
gibt es eine Möglichkeit von einem HTML Dokument nur die am Ende wirklicih angezeigten Buchstaben zu zählen und eine Zahl zu erhalten? Wenn ja wie bzw. mit welcher Klasse?! thx
Pound for pound, plutonium is about as toxic as caffeine when eaten.
Ich wollte von einem HTML Dokument nur die Zeichen (inkl. Leerzeichen) zählen, die auch tatsächlich angezeigt werden.
<body>
Hallo
</body>
DAs wären jetzt 5 Zeichen, die beim zählen herauskommen sollen.
Geht das irgendwie? thx
Ja sowas hab ich schon befürchet, da ich viele lange Texte habe, würde es sicher seine Zeit dauern, grad bei Stringoperationen... Geht es evtl. im Webbrowser den Text in einem String zu nehmen und davon "Length" auszugeben? Denn der Im Webbrowser angezeigte Text, ist ja die gesuchte Textlänge des HTML Dokuments?! thx
Ehm, das ist m.M.n. der komplett falsche Ansatz.
Ich würde es anderstrum machen.
Abhängig von den verwendeten Technologien müssen die Texte, also der Content, ja irgendwo herkommen. Z.B. aus ner Datenbank oder aus Plaintext Dateien usw. (oder hast du Plain-HTML?).
Das sinnvollste wäre die Textlänge zu zählen bevor der HTML Rahmen drumrum gebaut wird.
Falls Du reines HTML hast, könntest Du vielleicht über DOM Objekte die Zeichen zählen - nur so ne Idee (lange her die DOM Geschichten 😉).
Zugriffe auf HTML Elemente über DOM sehen von der Syntax her ungefähr so aus:
document.Formular.Artikel.value.length;
Ja sowas hab ich schon befürchet, da ich viele lange Texte habe, würde es sicher seine Zeit dauern, grad bei Stringoperationen...
Da brauchst Du Dir keine Sorgen zu machen. Ist zwar korrekt, dass String Operationen tendenziell sehr langsam sind, aber solange Du halbwegs ordentlich programmierst wirst du keine Probleme kriegen.
Ein guter Sortieralgorithmus braucht auf nem aktuellen System ca ne halbe Sekunde um eine Million Wörter zu sortieren ...
Moeglich, dass du eine Browserkomponente (IE, Gecko#) einbinden kannst und darueber zum Ziel kommst. Ansonsten:
Extraktion des Textes innerhalb von <body> (denn du willst ja nur den sichtbaren Text auf der Seite):
body = Regex.Replace(htmlText, @".*?<body.*?>(.*)</body>.*", "$1", RegexOptions.IgnoreCase | RegexOptions.Singleline);
Entfernen aller tags in diesem String:
text = Regex.Replace(body, @"<[^>]*>", "", RegexOptions.IgnoreCase | RegexOptions.Singleline);
Es bleibt ein Problem falls jemand ein unsichtbares Tag mit Inhalt verwendet.. Z.B. <script> oder dergleichen.
Disclaimer: Ungetestet und ich hafte nicht =)
Pound for pound, plutonium is about as toxic as caffeine when eaten.
<script> ist kein Problem, da es sich nur um formatierten HTML Text handelt (ich will nur, dass Text farbig dargestellt wird usw. dafür hab ich von Codeproject einen HTML Textbox Control heruntergeladen, damit erstellt man formatierten Text und dieser wird in einem Webbrowser dargestellt). Da ich wissen will wie lange der Text ist (Zeichenanzahl) muss ich das ganze machen (für Statistiken, welches der längste Text ist)... also einfach Regex nutzen, so wie im Posting über diesem?! thx