5

Cocoa に相当する Delphi の関数はありstringByTrimmingCharactersInSetますか?

必要なのは、文字列の先頭または末尾にある文字セットに含まれるすべての文字を削除することです。文字列の開始または終了が 1 つまたは複数存在しない場合もあります...

Delphiでこれを行う最も効率的な方法は何ですか?

4

2 に答える 2

6

私が知る限り、そのような RTL 関数は存在しません。ただし、および 関数を含むJCL プロジェクトJclStringsのユニット部分を確認できます。StrTrimCharsLeftStrTrimCharsRight

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;
于 2012-04-12T10:39:28.750 に答える
1

私の知る限りでは、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;

これが最高のパフォーマンスを発揮するソリューションではないことは確かですが、もっとシンプルなものを見つけるのは難しいでしょう。

于 2012-04-12T10:25:44.080 に答える