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.