Delphi XE3のオーバーロードを試してみた。
各オーバーロードの内容はプログラム中のコメントに
記載しました。
- program Project2;
-
- {$APPTYPE CONSOLE}
-
- {$R *.res}
-
- uses
- System.SysUtils;
-
- var
- s,s1 : string;
- elm : TArray<string>;
- elm2 : TArray<string>;
-
- begin
- try
-
-
- s := 'ドッペ,パックン,ニーナ,,ベルト・サタン,,キノッピー';
-
-
-
-
-
-
-
- elm := s.Split([','],2);
- write('overload1:');writeln(s);
-
- for s1 in elm do
- begin
- writeln(s1);
- end;
-
- writeln;
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- elm2 := s.Split([','],TStringSplitOptions.None);
- write('overload2-1:');writeln(s);
- for s1 in elm2 do
- begin
- writeln(s1);
- end;
- writeln;
-
- elm2 := s.Split([','],TStringSplitOptions.ExcludeEmpty);
- write('overload2-2:');writeln(s);
- for s1 in elm2 do
- begin
- writeln(s1);
- end;
- writeln;
-
-
-
-
-
-
-
-
-
-
- elm2 := s.Split([','],4,TStringSplitOptions.ExcludeEmpty);
- write('overload3:');writeln(s);
- for s1 in elm2 do
- begin
- writeln(s1);
- end;
- writeln;
-
-
-
-
-
-
- elm2 := s.Split(['クン'],TStringSplitOptions.None);
- write('overload4:');writeln(s);
- for s1 in elm2 do
- begin
- writeln(s1);
- end;
- writeln;
-
-
-
-
-
-
- elm2 := s.Split(['クン'],1,TStringSplitOptions.None);
- write('overload5:');writeln(s);
- for s1 in elm2 do
- begin
- writeln(s1);
- end;
- writeln;
-
-
- readln;
-
-
- except
- on E: Exception do
- Writeln(E.ClassName, ': ', E.Message);
- end;
- end.
- </string></string>
program Project2;
{$APPTYPE CONSOLE}
{$R *.res}
uses
System.SysUtils;
var
s,s1 : string;
elm : TArray;
elm2 : TArray;
//sh : TStringHelper;
begin
try
{ TODO -oUser -cConsole メイン : ここにコードを記述してください }
//sh : TStringHelper
s := 'ドッペ,パックン,ニーナ,,ベルト・サタン,,キノッピー';
//Writeln(s);
//カンマで分割
//オーバーロードの1つ目、第二引数に正の整数を入れると
//先頭から指定した個数だけ分割します。
//分割できる数以上の数を指定すると無視します。
//この場合は、ドッペとパックンだけを切り出します。
elm := s.Split([','],2);
write('overload1:');writeln(s);
//分割した要素を表示
for s1 in elm do
begin
writeln(s1);
end;
writeln;
//結合(念のため文字列を初期化)
//s := '';
//Writeln(s);
//s := s.Join(',',elm);
//Writeln(s);
//オーバーロードの2つ目、第二引数に
//TStringSplitOptions.ExcludeEmptyを指定すると
//空文字を無視して切り出します。
//TStringSplitOptionsを指定しない場合、あるいは
//TStringSplitOptions.Noneを指定した場合は
//空文字も1つとして切り出します。
elm2 := s.Split([','],TStringSplitOptions.None);
write('overload2-1:');writeln(s);
for s1 in elm2 do
begin
writeln(s1);
end;
writeln;
elm2 := s.Split([','],TStringSplitOptions.ExcludeEmpty);
write('overload2-2:');writeln(s);
for s1 in elm2 do
begin
writeln(s1);
end;
writeln;
//オーバーロードの3つ目、第二引数に正の整数を入れると
//先頭から指定した個数だけ分割します。
//このときTStringSplitOptions.ExcludeEmptyを指定すると
//空文字を無視して切り出します。
//TStringSplitOptionsを指定しない場合、あるいは
//TStringSplitOptions.Noneを指定した場合は
//空文字も1つとして切り出します。
//この場合はベルト・サタンも切り出します。
elm2 := s.Split([','],4,TStringSplitOptions.ExcludeEmpty);
write('overload3:');writeln(s);
for s1 in elm2 do
begin
writeln(s1);
end;
writeln;
//オーバーロードの4つ目、セパレータに文字列を指定する
//こともできます。
//この場合は、ドッペ,パッと,ニーナ,,ベルト・サタン,,キノッピー
//に分割されます。
//(セパレータにCRLFを指定することが可能です。)
elm2 := s.Split(['クン'],TStringSplitOptions.None);
write('overload4:');writeln(s);
for s1 in elm2 do
begin
writeln(s1);
end;
writeln;
//オーバーロードの5つ目、セパレータに文字列を指定したうえで
//分割した結果を取り出すことも可能です。
//この場合は、ドッペ,パッだけを取り出します。
//に分割されます。
elm2 := s.Split(['クン'],1,TStringSplitOptions.None);
write('overload5:');writeln(s);
for s1 in elm2 do
begin
writeln(s1);
end;
writeln;
readln;
except
on E: Exception do
Writeln(E.ClassName, ': ', E.Message);
end;
end.
で実際に実行した結果のビットマップが
です。
追伸:サンプルに使用した文字列がマイナーすぎたようなので、ちょっとだけわかりやすい
ものにしました。