如何从StringList中删除空格?

时间:2011-02-22 13:42:52

标签: delphi delphi-7

我正在向StringList加载一个文本文件(其中包含许多行,其中一些包含空格或制表符)。如何从整个StringList中删除空格(不包括换行符)?

2 个答案:

答案 0 :(得分:17)

这是一个粗略的解决方案,假设标签和空格是唯一的空格字符:

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);

你需要一个Unicode版本的Delphi,你需要使用Character单元。

如果您使用的是非Unicode版本的Delphi,那么您可以将if替换为:

if not (s[i] in [#9,#32]) then begin

答案 1 :(得分:1)

根据文本的数量,您可以对整个文本使用StringReplace()函数。我确定这不是最有效的方式,但应该有效。

e.g。

var tmpString : String;

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

然后将tmpString加载到stringlist中。