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