加入并添加分隔符以开始/结束

时间:2017-03-02 12:58:57

标签: delphi delphi-10.1-berlin

当我加入一个数组(字符串)时,我会在数组的每个元素之间得到一个分隔符

Writeln(string.Join('-', ['a','b','c']));
-> 'a-b-c'

但是我想在字符串的开头和结尾添加分隔符。我知道我可以这样做

program Project1;

{$APPTYPE CONSOLE}

uses
  System.SysUtils;

  function JoinAndAddDelimitersToStartAndEnd(const Delimiter: string; const SArr: TArray<string>): string;
  begin
    Result := Delimiter + string.Join(Delimiter, SArr) + Delimiter;
  end;

begin
  Writeln(JoinAndAddDelimitersToStartAndEnd('-', ['a','b','c']));
  //-> '-a-b-c-'
  Readln;
end.

有更好的(内置?)方式吗?

2 个答案:

答案 0 :(得分:0)

另一个&#34;丑陋&#34;解决方案是将空元素添加到数组的开头和结尾,如果数组连接比写入更多。通过在数组填充之前添加​​第一个空元素,然后添加一个空元素,它不会有很多开销,并且优点是1(相对昂贵)字符串连接而不是3。

答案 1 :(得分:-2)

怎么样:

var
   s : string;
   SArr : TArray<string>;
   Delim : string;

begin
   Delim := '-';
   SArr := ['a','b','c'];

   s := format('%s%s%s',[Delim,string.Join(Delim,SArr),Delim]);
end;