Gibt es eine Möglichkeit, leere Zeichenfolgen aus dem dynamischen Array, das sich aus der SplitString-Funktion (Delphi XE, StrUtils) ergibt, auszuschließen, ohne das Array durchlaufen zu müssen?Eliminieren leerer Zeichenfolgen mit SplitString
Wenn nicht, kann jemand den effizientesten Weg vorschlagen? Im Moment mache ich es wie folgt aus:
function SplitStringNoEmpty(myString : string; myDelimiters : string):TStringDynArray;
var
words_array_pre : TStringDynArray;
words_array_pos : TStringDynArray;
array_length : Integer;
actual_length : Integer;
current_word : string;
procedure AddElement(const Str: string);
begin
words_array_pos[actual_length]:= Str;
inc(actual_length);
end;
begin
words_array_pre:= SplitString(myString, whitespaceNewLineCharacterSet + punctuationCharacterSet);
array_length:= Length(words_array_pre);
if (array_length >0) then
begin
actual_length:= 0;
SetLength(words_array_pos, array_length);
for current_word in words_array_pre do
begin
if (current_word <> '') then
AddElement(current_word);
end;
SetLength(words_array_pos, actual_length);
result:= words_array_pos;
end
else
result:= words_array_pre;
end;
Haben Sie darüber nachgedacht, was gerade zu tun hat split, aber ohne im Ergebnis leere Elemente einschließlich? –