Как удалить пробелы из StringList? - PullRequest
5 голосов
/ 22 февраля 2011

Я загружаю текстовый файл (который содержит много строк, некоторые содержат пробелы или табуляции) в StringList.Как я могу удалить пробелы (за исключением новых строк) из всего StringList?

Ответы [ 2 ]

17 голосов
/ 22 февраля 2011

Вот грубое решение, предполагающее, что символы табуляции и пробела являются единственными символами пробела:

tmp := Strings.Text;
tmp := StringReplace(tmp, #9, '', [rfReplaceAll]);
tmp := StringReplace(tmp, #32, '', [rfReplaceAll]);
Strings.Text := txt;

Вот более продвинутая версия, которая обнаружит любые пробелы:

function RemoveWhiteSpace(const s: string): string;
var
  i, j: Integer;
begin
  SetLength(Result, Length(s));
  j := 0;
  for i := 1 to Length(s) do begin
    if not TCharacter.IsWhiteSpace(s[i]) then begin
      inc(j);
      Result[j] := s[i];
    end;
  end;
  SetLength(Result, j);
end;
...
Strings.Text := RemoveWhiteSpace(Strings.Text);

Вам понадобится одна из версий Delphi для Unicode, и вам нужно будет использовать модуль Character.

Если вы используете версию Delphi, отличную от Unicode, вы должны заменить if на:

if not (s[i] in [#9,#32]) then begin
1 голос
/ 22 февраля 2011

В зависимости от объема текста вы можете использовать функцию StringReplace () для всего текста. Я уверен, что это не самый эффективный способ, однако должен работать.

например.

var tmpString : String;

    Memo1.LoadFromFile(Filename);    
    tmpString := StringReplace(memo1.Text, #9, '',[rfReplaceAll]);

Затем загрузите tmpString в список строк.

...