Есть ли способ исключить пустые строки из динамического массива, полученного в результате функции SplitString (Delphi XE, StrUtils), без необходимости проходить через массив?Устранение пустых строк с помощью SplitString
Если нет, может ли кто-нибудь предложить наиболее эффективный способ сделать это? Сейчас я делаю это так:
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;
Рассматривали ли вы просто делать то, что делает SplitString, но без учета пустых элементов в результате? –