Cocoa に相当する Delphi の関数はありstringByTrimmingCharactersInSet
ますか?
必要なのは、文字列の先頭または末尾にある文字セットに含まれるすべての文字を削除することです。文字列の開始または終了が 1 つまたは複数存在しない場合もあります...
Delphiでこれを行う最も効率的な方法は何ですか?
私が知る限り、そのような RTL 関数は存在しません。ただし、および
関数を含むJCL プロジェクトJclStrings
のユニット部分を確認できます。StrTrimCharsLeft
StrTrimCharsRight
function StrTrimCharsLeft(const S: string; const Chars: TCharValidator): string; overload;
function StrTrimCharsLeft(const S: string; const Chars: array of Char): string; overload;
function StrTrimCharRight(const S: string; C: Char): string;
function StrTrimCharsRight(const S: string; const Chars: TCharValidator): string; overload;
function StrTrimCharsRight(const S: string; const Chars: array of Char): string; overload;
私の知る限りでは、RTL にはそのような関数は含まれていません。正規表現を使用してギャップを埋めることができます。
function MyTrim(const Input: string; const TrimChars: string): string;
begin
Result := TRegEx.Replace(Input, Format('^[%s]*', [TrimChars]), '');
Result := TRegEx.Replace(Result, Format('[%s]*$', [TrimChars]), '');
end;
これが最高のパフォーマンスを発揮するソリューションではないことは確かですが、もっとシンプルなものを見つけるのは難しいでしょう。