nakamurakko’s blog

仕事で覚えたこと、勉強したことを自分のメモ代わりに書いていこうかなと。

Delphiで文字列結合が楽になった

1.実行環境:Delphi XE7 Professional Update 1

Javaの「String,join」がDelphiでも出来ないかと思っていたけど、Delphi XE3から出来るようになっていたらしい。
気づいてなかった。

  1. program ConsoleApp;
  2. {$APPTYPE CONSOLE}
  3. uses
  4.   System.Classes,
  5.   System.SysUtils;
  6.  
  7. var
  8.   stringList: TStringList;
  9.   messageText: string;
  10. begin
  11.   stringList := TStringList.Create;
  12.  
  13.   // 文字列「aaa」「bbb」「ccc」を設定。
  14.   stringList.Append('aaa');
  15.   stringList.Append('bbb');
  16.   stringList.Append('ccc');
  17.  
  18.   // 1.カンマ区切りで出力。
  19.   messageText := stringList.DelimitedText;
  20.   Writeln('1.' + messageText);
  21.  
  22.   // 2.区切り文字を「&」に変えて出力。
  23.   stringList.Delimiter := '&';
  24.   messageText := stringList.DelimitedText;
  25.   Writeln('2.' + messageText);
  26.  
  27.   // 3.区切り文字を「 and 」で出力。
  28.   messageText := string.Join(' and ', stringList.ToStringArray);
  29.   Writeln('3.' + messageText);
  30.  
  31.   stringList.Free;
  32. end.



出力結果
1.aaa,bbb,ccc
2.aaa&bbb&ccc
3.aaa and bbb and ccc

 

TStringListのDelimitedTextはDelimiterを変更する事で区切り文字を変更出来たけど、設定できるのはCharのため、2バイト以上設定出来なかった。
Delphi XE3から導入されたTStringHelperのおかげでstring型が拡張されて、「string.join」が書けるようになり、第1引数「Separator」はstringのため、2バイト以上の区切り文字に指定出来るようになっている。

これは便利。

 

<2015/09/11>

ソースを一部修正。