Laden...

HTML Quellcode Buchstaben zählen

Erstellt von baer999 vor 17 Jahren Letzter Beitrag vor 17 Jahren 2.072 Views
B
baer999 Themenstarter:in
375 Beiträge seit 2007
vor 17 Jahren
HTML Quellcode Buchstaben zählen

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

D
386 Beiträge seit 2007
vor 17 Jahren
  1. Was hat das mit Datentechnologien zu tun?
  2. Was genau (im Sinne von exakt) willst du machen? Welche Zeichen zaehlen? Nur Buchstaben? Alles ausser Whitespace Zeichen? Jedes Zeichen (auch Tabs, Spaces)? Interessiert dich nur der angezeigte Text oder auch die Formatierung (newlines) der gerenderten Seite?

Pound for pound, plutonium is about as toxic as caffeine when eaten.

B
baer999 Themenstarter:in
375 Beiträge seit 2007
vor 17 Jahren

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

Gelöschter Account
vor 17 Jahren

du ließt das dokument in eine stringvariable und hangelst dich von "<" zu ">" mit .IndexOf und entfernst diese gebite und zum schluss ließt du mit .Lengh die anzahl der zeichen aus.

ps: vorischt vor javascript und verschachtelten "<>".

B
baer999 Themenstarter:in
375 Beiträge seit 2007
vor 17 Jahren

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

G
84 Beiträge seit 2007
vor 17 Jahren

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 ...

D
386 Beiträge seit 2007
vor 17 Jahren

Moeglich, dass du eine Browserkomponente (IE, Gecko#) einbinden kannst und darueber zum Ziel kommst. Ansonsten:

  • Die Extraktion wuerde man natuerlich nicht mit .indexOf() machen, sondern in einer einzigen regex
  • Verschachtelte <> sind in HTML nicht erlaubt
  • Die Methode ist fehleranfaellig, egal wie du daran gehst, aber ich wuerde es so loesen:

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.

B
baer999 Themenstarter:in
375 Beiträge seit 2007
vor 17 Jahren

<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