Delphi XE3では新機能TStringHelperによって、文字列がメソッドを持つようになりました。
//従来の書き方
S := UpperCase('Hello');
//TStringHelperによって可能になった書き方
S := 'Hello'.ToUpper;
コード補完もできるので、目的の処理を見つけるのが簡単になりました。
メソッド名はC++Builderとそろえているようなのでわかりやすいです。
ただし、C++BuilderのUnicodeStringクラスのすべてのメソッドが用意されているわけではありません。
また、TStringHelperにのみ存在するメソッドもあります。
C++BuilderのUnicodeStringクラスにはない便利なメソッドを試してみます。
TStringHelper.Trim
Trimは指定された文字を、文字列の前後から取り除きます。
S := 'AABBCC'.Trim(['A']);
Writeln(S); //=> BBCC
S := 'AABBCC'.Trim(['A', 'C']);
Writeln(S); //=> BB
S := 'AABBCC'.Trim(['A', 'B', 'C']);
Writeln(S); //=>
S := 'AABBCC'.Trim(['B']);
Writeln(S); //=> AABBCC
TStringHelper.TrimStart
TrimStartは指定された文字を、文字列の先頭から取り除きます。
S := 'AABBCC'.TrimStart(['A']);
Writeln(S); //=> ABBCC
S := 'AABBCC'.TrimStart(['A', 'B']);
Writeln(S); //=> BCC
S := 'AABBCC'.TrimStart(['A', 'B', 'C']);
Writeln(S); //=> C
一文字ずれているような気がしますが気のせいでしょうか…
追記:一文字ずれる問題はDelphi XE4で修正されました。
TStringHelper.TrimEnd
TrimEndは指定された文字を、文字列の末尾から取り除きます。
S := 'AABBCC'.TrimEnd(['C']);
Writeln(S); //=> AABB
S := 'AABBCC'.TrimEnd(['B', 'C']);
Writeln(S); //=> AA
S := 'AABBCC'.TrimEnd(['A', 'B', 'C']);
Writeln(S); //=>
TStringHelper.Split
Splitは指定した区切り文字で、文字列を分割します。
for s in '2012/12/17 10:31:52'.Split(['/',':',' ']) do
WriteLn(S);
//=> 2012
//=> 12
//=> 17
//=> 10
//=> 31
//=> 52
TStringHelper.IndexOfAny
IndexOfAnyは指定された文字が、文字列内で最初に現れる場所を示す整数を返します。
文字列のインデックスは0から数えます。
P := 'This is a string.'.IndexOfAny(['w', 's', 'a']);
Writeln(P); //=> 3
TStringHelper.LastIndexOfAny
LastIndexOfAnyは指定された文字が、文字列内で最後に現れる場所を示す整数を返します。
文字列のインデックスは0から数えます。
P := 'This is a string.'.LastIndexOfAny(['w', 's', 'a']);
Writeln(P); //=> 10