Einzelnen Beitrag anzeigen

Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#3

Re: string in einzelne wörter zersetzen

  Alt 25. Aug 2004, 23:58
Das Problem ist, dass Wörte nicht zwingenderweise nur durch ein bestimmtes Zeichen getrennt sein müssen:
'Das ist eine Frage.Aber was ist die Antwort?Die Antwort ist:Nein.'
Wie viele Wörter sind das, wenn man ein leerzeichen als Trenner nimmt? Und wie viele sind es, wenn man nich die Satzzeichen dazu nimmt?

Deswegen:
Delphi-Quellcode:
type
  TWordDelimiter = set of Char;

var
  WordDelimiter: TWordDelimiter = [#1..#64, #91..#96, #123..#127];

procedure Foo(const s: String; sl: TStrings);
var
  p: PChar;
  Start: PChar;
  dummy: String;
begin
  p := PChar(s);
  while p^ <> #0 do
  begin
    if p^ in WordDelimiter then
      Inc(p)
    else
    begin
      Start := p;
      while not ((p^ in WordDelimiter) or (p^ = #0)) do
        Inc(p);
      SetString(dummy, Start, p - Start);
      sl.Add(dummy);
    end;
  end;
end;

procedure TForm1.Button1Click(Sender: TObject);
const
  MYTEXT = 'Once upon a midnight dreary, while I pondered, weak and weary';
begin
  Foo(MYTEXT, Listbox1.Items);
end;
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat