AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Live Stichwortsuche

Ein Thema von Ajintaro · begonnen am 24. Feb 2014 · letzter Beitrag vom 27. Feb 2014
Antwort Antwort
Benutzerbild von Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#1

AW: Live Stichwortsuche

  Alt 27. Feb 2014, 09:13
Hätte man das nicht einfach mit 'ner TStringlist machen können und das Leerzeichen als Delimiter?
OK, im Falle doppelter Leerzeichen hintereiander hätte man leere Strings in der Liste, die man erst rauslöschen müsste.
Wäre wahrscheinlich langsamner, oder?
Hier ist als Whitespace nur das Leerzeichen definiert. Die Erfahrung zeigt aber, dass in der Realität mehrere Zeichen als Whitespace genommen werden (z.B. ' ,.?!;' ) und diese Funktion berücksichtigt das dann einfach und bei einer StringList muss ich erst vorher alles umwandeln.

Beliebt ist es auch zusammenhängende Wörter in "" zu setzen, die dann trotz Whitspace zusammenbleiben.

Input: '"Hallo du",da!' Output: ['Hallo du','da'] Auch wäre eine Erweiterung denkbar um bestimmte Begriffe auszuschließen, dann müsste man sich aber ein anderes Ausgabeformat überlegen.
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ‎ea 0a 4c 14 0d b6 3a a4 c1 c5 b9 dc 90 9d f0 e9 de 13 da 60)

Geändert von Sir Rufo (27. Feb 2014 um 09:17 Uhr)
  Mit Zitat antworten Zitat
Furtbichler
(Gast)

n/a Beiträge
 
#2

AW: Live Stichwortsuche

  Alt 27. Feb 2014, 11:19
Delphi-Quellcode:
Procedure SentenceToWords (const sentence : String; words : TStringList)
Var
  c : Char;
  word : String;

begin
  for c in sentence do
    if IsWhiteSpace(c) then
      if Length(word)>0 then begin
        words.Add(word);
        word := '';
      end else
    else if IsLetterOrDigit(c) then
      word := word + c;

  if Length (word)>0 then
    words.Add(word);
end;
Ungetestet. Die Funktionen 'IsWhiteSpace' und 'IsLetterOrDigit' sind natürlich nachzuliefern (falls es sie noch nicht gibt).
Ist zwar vielleicht ein wenig langsamer, aber ob nun 10 Nanosekunden oder 30 ist -denke ich- nicht ganz so tragisch. Dafür ist es imho einfacher zu verstehen und wenigstens kann ich mit Strings arbeiten und muss mich nicht mit PChar rumschlagen, wieso hab ich mich denn für Delphi entschieden? Bei dem PChar-Geraffel hätte ich gleich C nehmen können.
  Mit Zitat antworten Zitat
Antwort Antwort

 

Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 03:19 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz