본문 바로가기

코딩 이야기/델파이 코딩

델파이 문자열 함수 종류 및 예시

델파이 문자열 함수 종류 및 예시

델파이에서 문자열을 다루는 다양한 함수들은 대부분 SysUtils 유닛에 포함되어 있습니다.

사용해야 할 PAS 유닛

uses SysUtils;

1. 길이 및 개별 문자 접근

Length 함수

기능: 문자열의 길이를 반환합니다.

예시:

var
  MyString: string;
  Len: Integer;
begin
  MyString := '안녕하세요';
  Len := Length(MyString);
  ShowMessage(Format('문자열 길이: %d', [Len])); 
  // 결과 예시: 문자열 길이: 5
end;

문자열 인덱싱 []

기능: 문자열의 특정 위치에 있는 문자(Char)에 접근합니다. 인덱스는 1부터 시작합니다.

예시:

var
  MyString: string;
  FirstChar: Char;
begin
  MyString := 'Delphi';
  FirstChar := MyString[1]; // 첫 번째 문자
  ShowMessage(Format('첫 번째 문자: %s', [FirstChar])); 
  // 결과 예시: 첫 번째 문자: D
end;

2. 문자열 조작 (추출, 삽입, 삭제, 교체)

Copy 함수

기능: 문자열의 특정 위치에서 지정된 길이만큼의 부분 문자열을 추출합니다. Copy(Source, Index, Count)

예시:

var
  MyString: string;
  Sub: string;
begin
  MyString := 'ABCDEFG';
  Sub := Copy(MyString, 3, 4); // 3번째 위치에서 4글자 추출
  ShowMessage(Format('추출된 문자열: %s', [Sub])); 
  // 결과 예시: 추출된 문자열: CDEF
end;

Pos 함수

기능: 원본 문자열 내에서 특정 부분 문자열이 처음 나타나는 시작 위치(인덱스)를 찾습니다. 찾지 못하면 0을 반환합니다. Pos(SubString, SourceString)

예시:

var
  MyString, SearchFor: string;
  Position: Integer;
begin
  MyString := 'Hello World';
  SearchFor := 'World';
  Position := Pos(SearchFor, MyString);
  ShowMessage(Format('%s의 시작 위치: %d', [SearchFor, Position])); 
  // 결과 예시: World의 시작 위치: 7 (W는 7번째 문자)

  SearchFor := 'Delphi';
  Position := Pos(SearchFor, MyString);
  ShowMessage(Format('%s의 시작 위치: %d', [SearchFor, Position])); 
  // 결과 예시: Delphi의 시작 위치: 0
end;

Delete 프로시저

기능: 문자열의 특정 위치에서 지정된 길이만큼의 문자를 삭제합니다. Delete(TargetString, Index, Count)

예시:

var
  MyString: string;
begin
  MyString := 'abcdefg';
  Delete(MyString, 3, 2); // 3번째 위치에서 2글자(cd) 삭제
  ShowMessage(Format('삭제 후 문자열: %s', [MyString])); 
  // 결과 예시: 삭제 후 문자열: abefg
end;

Insert 프로시저

기능: 대상 문자열의 특정 위치에 다른 문자열을 삽입합니다. Insert(SourceString, TargetString, Index)

예시:

var
  MyString, ToInsert: string;
begin
  MyString := 'Hello World';
  ToInsert := 'Delphi ';
  Insert(ToInsert, MyString, 7); // 'World' 앞에 'Delphi ' 삽입 (7번째 위치)
  ShowMessage(Format('삽입 후 문자열: %s', [MyString])); 
  // 결과 예시: 삽입 후 문자열: Hello Delphi World
end;

StringReplace 함수 (권장) / AnsiReplaceStr 함수

기능: 문자열 내에서 특정 부분 문자열을 다른 문자열로 모두 또는 처음 나타나는 것만 교체합니다. StringReplace(Source, OldText, NewText, Flags) 형식을 주로 사용합니다. Flags[rfReplaceAll]을 넣어 모두 교체할 수 있습니다.

예시:

var
  MyString, Old, New, ResultString: string;
begin
  MyString := 'apple banana apple';
  Old := 'apple';
  New := 'orange';

  // 모든 'apple'을 'orange'로 교체
  // [rfReplaceAll] 플래그 사용
  ResultString := StringReplace(MyString, Old, New, [rfReplaceAll]); 
  ShowMessage(Format('교체 후 문자열: %s', [ResultString])); 
  // 결과 예시: 교체 후 문자열: orange banana orange
end;

Concat 함수 또는 + 연산자

기능: 두 개 이상의 문자열을 결합합니다. + 연산자가 더 일반적으로 사용됩니다.

예시:

var
  Str1, Str2, Str3, FullString: string;
begin
  Str1 := 'Hello';
  Str2 := ' ';
  Str3 := 'World';
  FullString := Str1 + Str2 + Str3; // + 연산자 사용
  ShowMessage(Format('결합된 문자열: %s', [FullString])); 
  // 결과 예시: 결합된 문자열: Hello World

  // Concat 함수 사용 예시 (세 개 이상의 문자열 결합에 편리)
  FullString := Concat(Str1, Str2, Str3, '!');
  ShowMessage(Format('결합된 문자열 (Concat): %s', [FullString])); 
  // 결과 예시: 결합된 문자열 (Concat): Hello World!
end;

3. 대소문자 변환 및 공백 제거

UpperCase 함수

기능: 문자열 내 모든 소문자를 대문자로 변환합니다.

예시:

var
  MyString, Upper: string;
begin
  MyString := 'Hello World';
  Upper := UpperCase(MyString);
  ShowMessage(Format('대문자: %s', [Upper])); 
  // 결과 예시: 대문자: HELLO WORLD
end;

LowerCase 함수

기능: 문자열 내 모든 대문자를 소문자로 변환합니다.

예시:

var
  MyString, Lower: string;
begin
  MyString := 'Hello World';
  Lower := LowerCase(MyString);
  ShowMessage(Format('소문자: %s', [Lower])); 
  // 결과 예시: 소문자: hello world
end;

Trim 함수

기능: 문자열의 시작과 끝에 있는 공백 문자(스페이스, 탭 등)를 모두 제거합니다.

예시:

var
  MyString, Trimmed: string;
begin
  MyString := '   Hello World   ';
  Trimmed := Trim(MyString);
  ShowMessage(Format('Trim 결과: "%s"', [Trimmed])); // 결과 예시: Trim 결과: "Hello World"
end;

TrimLeft 함수

기능: 문자열의 시작 부분에 있는 공백 문자만 제거합니다.

예시:

var
  MyString, Trimmed: string;
begin
  MyString := '   Hello World   ';
  Trimmed := TrimLeft(MyString);
  ShowMessage(Format('TrimLeft 결과: "%s"', [Trimmed])); 
  // 결과 예시: TrimLeft 결과: "Hello World   "
end;

TrimRight 함수

기능: 문자열의 끝 부분에 있는 공백 문자만 제거합니다.

예시:

var
  MyString, Trimmed: string;
begin
  MyString := '   Hello World   ';
  Trimmed := TrimRight(MyString);
  ShowMessage(Format('TrimRight 결과: "%s"', [Trimmed])); 
  // 결과 예시: TrimRight 결과: "   Hello World"
end;

4. 타입 변환 및 포맷팅

이 함수들은 다른 데이터 타입을 문자열로 변환하거나, 지정된 형식으로 문자열을 만드는 데 사용됩니다.

IntToStr 함수

기능: Integer 값을 문자열로 변환합니다.

예시:

var
  Count: Integer;
  CountStr: string;
begin
  Count := 123;
  CountStr := IntToStr(Count);
  ShowMessage('카운트: ' + CountStr); 
  // 결과 예시: 카운트: 123
end;

FloatToStr 함수

기능: 부동 소수점 값을 문자열로 변환합니다. 시스템 설정을 따릅니다.

예시:

var
  Value: Double;
  ValueStr: string;
begin
  Value := 123.456;
  ValueStr := FloatToStr(Value);
  ShowMessage('값: ' + ValueStr); 
  // 결과 예시: 값: 123.456 (시스템 설정에 따라 다를 수 있음)
end;

FloatToStrF 함수

기능: 부동 소수점 값을 지정된 포맷과 정밀도로 문자열로 변환합니다. (`SysUtils`에 있습니다.)

포맷 종류 예시: ffCurrency, ffFixed, ffExponent

예시:

var
  Value: Double;
  ValueStr: string;
begin
  Value := 123.45678;
  // 소수점 이하 2자리 고정 형식
  // 값, 형식, 전체 자릿수, 소수점 이하 자릿수
  ValueStr := FloatToStrF(Value, ffFixed, 10, 2); 
  ShowMessage('고정 형식: ' + ValueStr); 
  // 결과 예시: 고정 형식: 123.46

  // 통화 형식 (시스템 설정 따름)
  ValueStr := FloatToStrF(Value, ffCurrency, 10, 2);
  ShowMessage('통화 형식: ' + ValueStr); 
  // 결과 예시: 통화 형식: ₩123.46 (한국 설정 시)
end;

BoolToStr 함수

기능: Boolean 값을 문자열 ('TRUE' 또는 'FALSE' 또는 지정한 문자열)로 변환합니다.

예시:

var
  IsActive: Boolean;
  StatusStr: string;
begin
  IsActive := True;
  // 결과 예시: 'TRUE' 또는 'FALSE'
  StatusStr := BoolToStr(IsActive); 
  ShowMessage('상태 1: ' + StatusStr);

  // 두 번째 인자가 True이면 0/1 반환 (1)
  StatusStr := BoolToStr(IsActive, True); 
  ShowMessage('상태 2: ' + StatusStr); 
  // 결과 예시: '1'

  // True/False 시 문자열 직접 지정
  StatusStr := BoolToStr(IsActive, '활성', '비활성'); 
  ShowMessage('상태 3: ' + StatusStr); 
  // 결과 예시: '활성'
end;

Format 함수

기능: 지정된 포맷 문자열과 인자 목록을 사용하여 복합적인 포맷의 문자열을 생성합니다. 가장 강력한 포맷 함수입니다. (`SysUtils`에 있습니다.)

형식 지정자 예시: %s, %d, %f, %n

예시:

var
  Name: string;
  Age: Integer;
  FormattedString: string;
begin
  Name := '김철수';
  Age := 25;
  FormattedString := Format('사용자 정보: 이름은 %s이고, 나이는 %d세 입니다.', [Name, Age]);
  ShowMessage(FormattedString); 
  // 결과 예시: 사용자 정보: 이름은 김철수이고, 나이는 25세 입니다.
end;
DateToStr, TimeToStr, DateTimeToStr 함수는 SysUtils에 있으며, 날짜/시간 변환에 사용됩니다.