프로그래밍/델파이

문자열에서 숫자만 추출하는 함수

채윤아빠 2007. 12. 21. 21:42
728x90
반응형

문자열에서 숫자만 추출하는 경우가 생겨 함수로 한번 만들어 봤습니다.
문자열 데이터에서 숫자(소수점 포함)만 추출합니다.
추출한 문자열을 StrToFloatDef 함수 등을 이용하여 숫자형으로 변환할 수 있습니다.

function ExtractNumeric(const strData: string): string;
var
  i, nLen: integer;
  p, d: PChar;
begin
  nLen := Length(strData);
  SetLength(Result, nLen);
  p := @strData[1];
  d := @Result[1];
  for i := 0 to nLen - 1 do
  begin
    if (p^ in ['0'..'9', '.', '-']) then
    begin
      d^ := p^;
      inc(d);
    end;
    inc(p);
  end;

  SetLength(Result, integer(d - @Result[1]));
  if (Length(Result) = 0) then
    Result := '0';
end;

실행예 :
ExtractNumeric('abcdefg')       => '0'
ExtractNumeric('37회')            => '37'
ExtractNumeric('3.14mm')        => '3.14'