如何删除角色周围的空间?

Fab*_*ale 8 delphi string

说我有以下字符串:

s := 'This , is,       the Delphi  ,    World!';
Run Code Online (Sandbox Code Playgroud)

我想要以下输出:

Result := 'This,is,the Delphi,World!';
Run Code Online (Sandbox Code Playgroud)

基本上我需要一个例程,只有当它们出现在逗号字符之前或之后(这是我的分隔符)时才会删除所有出现的空格,在其他字之间留下完整的空格.

任何帮助深表感谢.

您如何看待这个解决方案?

function RemoveSpacesAroundDelimiter(var aString: string; aDelimiter:
    string): string;
begin
  while AnsiContainsText(aString, aDelimiter + ' ') do
    begin
    aString := StringReplace(aString, ', ', aDelimiter, [rfReplaceAll, rfIgnoreCase]);
    end;

  while AnsiContainsText(aString, ' ' + aDelimiter) do
    begin
    aString := StringReplace(aString, ' ' + aDelimiter, aDelimiter, [rfReplaceAll, rfIgnoreCase]);
    end;

  Result := aString;
end;
Run Code Online (Sandbox Code Playgroud)

谢谢

法比奥

Gol*_*rol 9

听起来像TStringList的任务.

function UltraTrim(Value: string): string;
var
  sl: TStringList;
  i: Integer;
begin
  sl := TStringList.Create;
  try
    // Prevent the stringlist from using spaces as delimiters too.
    sl.StrictDelimiter := True;

    // Set the comma separated text.
    sl.CommaText := Value;

    // Trim each item.
    for i := 0 to sl.Count -1 do
      sl[i] := Trim(sl[i]);

    // Concat back to comma separated string.
    Result := sl.CommaText;
  finally
    sl.Free;
  end;

end;
Run Code Online (Sandbox Code Playgroud)

  • 可能是有史以来最有用的组件 (8认同)
  • 除了它不是一个组成部分,我完全同意.TStringList多次挽救了我的生命. (8认同)
  • 你对*共识*,@ Hugh这个词有一个奇怪的理解.我认为在我提出之前绝对没有讨论这是Fabio想要的,所以我不确定你怎么会想到有共识.即使之前有,也没有了. (2认同)