[Delphi] 숫자 or 문자 제거하기

Clover·2022년 3월 25일
0

Delphi

목록 보기
6/12
post-thumbnail

숫자 or 문자 제거하기 예제

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로 구현하였다.
    • 따라서, 매개변수로 넘겨받는 변수 자체에 할당되어 있는 값 자체가 바뀌는 점을 유의해야 한다.

0개의 댓글