数値または文字を削除[Delphi]


数値または文字の削除例


String変数値から数値または文字を選択して削除する簡単な方法の例
コードソース:Stack Overflow

数値のみ削除

function RemoveDecimal(const aString: string): string;
var
  C:Char; Index:Integer;
begin
  Result := '';
  SetLength(Result, Length(aString));
  Index := 1;
  for C in aString do
  begin
    if not CharInSet(C, ['0' .. '9']) then
    begin
      Result[Index] := C;
      Inc(Index);
    end;
  end;
  SetLength(Result, Index-1);
end;
  • for-in文が使用されていることがわかります.
  • delphi 2005版以上から使用開始.
  • 文字のみ削除


    上記のサンプルコードで条件が逆の場合、数値ではなく文字のみを削除できます.
    procedure RemoveChar(var s: string);
    var
      i, j: Integer;
      pc: PChar;
    begin
      j := 0;
      pc := PChar(@s[1]);
      for i := 0 to Length(s) - 1 do
      begin
        if not (pc[i] in ['0'..'9']) then
          Inc(j)
        else
          pc[i - j] := pc[i];
      end;
      SetLength(s, Length(s) - j);
    end;
  • for-in文を使用せず、より低いバージョンの互換性を考慮したコード.
  • ではなく、パラメータがvarタイプであるため、procedureとして実装される.
  • したがって、パラメータに割り当てられた変数自体の値自体が変化することに注意してください.