delphi - 如何从 StringList 中删除空格?

标签 delphi delphi-7

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

最佳答案

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

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 单元。

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

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

关于delphi - 如何从 StringList 中删除空格?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5078895/

相关文章:

delphi - 如何在 Delphi 10.3 Rio 上安装 Indy?

delphi - 如何在 Delphi 中以编程方式创建带有几个组件的表单

delphi - 在delphi 7中制作向导界面

delphi - 如何避免 "Not Responding"

delphi - 在运行时创建对象

delphi - 实现 TObjectList<myClass> 的自定义二进制搜索 (Delphi XE)

delphi - Delphi 的 static 关键字在纯 native 代码中是否有任何意义?

delphi - TDateTimePicker 在显示中显示时间并可以编辑时间

arrays - 通过数组将图像加载到 TImage 中

delphi - 调用 TMouse.GetCursorPos 有时会失败,并显示 "A call to an OS function failed"