델파이 기초 다지기

문자 자료형

델파이 자료형 중 문자 자료형에 대해 알아보고, 문자 관련 함수를 학습합니다.

문자 자료형

문자열/문자 사용

var
  MyString: string;
  MyChar: Char;
begin
  MyString := '안녕 하세요';
  MyString := '안녕' + ' 하세요';
  MyString := MyString + '!';
  // 1 + 1 <> '1' + '1' ( 2 <> '11')

  MyString := '''험프리''님 안녕하세요.';
  ShowMessage(MyString);

  MyString := 'Line1'#13#10'Line2';

  MyChar := '안';
  MyChar := MyString[1];
end;

문자열 종류

종류 최대 길이 비고
string(UnicodeString) ~ 2^30 자 Unicode 문자, 2바이트 문자
WideString ~ 2^30 자 Unicode 문자, 모바일 플랫폼 미지원
AnsiString ~ 2^31 자 1바이트 문자
ShortString 255자 1바이트 문자, 하위 호환용

참고: String Types(Delphi) - 엠바카데로 위키

문자 관련 함수

함수란? - 특정 동작을 수행하도록 구현된 코드블록, 함수 이름, 매개변수(파라메터) 들, 반환 값으로 구성

  • Length(S: string): Integer; - 문자열 S의 길이(글자수) 반환
  • Pos(SubStr, Str: string): Integer; - 문자열 Str에서 SubStr의 위치 반환
  • Copy(S: string, Index, Count: Integer): string; - 문자열 S에서 Index 부터 Count 길이만큼 문자열을 잘라 반환
  • StringReplace(S, Old, New: string; Flags: TReplaceFlags): string; - 문자열 S에서 Old를 New로 치환 해 반환
  • Trim(S: string): string; - 문자열 S 앞뒤의 공백을 제거해 반환
  • IntToStr(Value: Integer): string; - 정수 Value를 문자로 치환해 반환
  Num := Length('안녕하세요');
  Memo1.Lines.Add('문자열의 길이: ' + IntToStr(Num)); // 5

  Num := Pos('하', '안녕하세요');
  Memo1.Lines.Add('[하]의 위치: ' + IntToStr(Num)); // 3

  Str := Copy('안녕하세요', 3, 2);
  Memo1.Lines.Add('3번째에서 2글자 복사: ' + Str); // 하세

  Str := StringReplace('안녕하세요', '하세요', '히가세요', [rfReplaceAll]);
  Memo1.Lines.Add('문자열 치환: ' + Str); // 안녕히가세요

  Str := Trim('    안녕 하세요   ');
  Memo1.Lines.Add('앞뒤 공백 제거: ' + Str); // 안녕 하세요

코드 툴팁(Shift + Ctrl + Space), 코드완성(Complete Code, Ctrl + Space) 활용

연습문제

1, 너의 이름은

아래 코드는 문자열 S에서 이름과 나이를 추출하는 코드입니다.

이름을 추출하는 코드는 이미 완성되었습니다. 나이를 완성하는 코드를 완성하세요.

var
  S, S2: string;
  Name, Age: string;
  I, C: Integer;
begin
  S := '내 이름은 [홍길동], 나이는 <23> 입니다.';

  I := Pos('[', S) + 1; // 8
  C := Pos(']', S) - I; // (11 - 8) = 3
  Name := Copy(S, I, C);

  // [*] 위의 코드를 참고해 나이를 추출하는 코드를 완성하세요.
//  Age := Copy(

  S2 := '이름 : ' + Name + #13#10;
  S2 := S2 + '나이 : ' + Age;

  Memo1.Lines.Add(S);
  Memo1.Lines.Add(S2);
end;

새로운 프로젝트를 만들어 시작해보세요.
(시작이 어려운 분들은 다운로드 링크를 클릭 해 프로젝트를 다운로드 받아 빈 내용을 완성하세요.)

2, 생일 축하

생일을 축하하는 축하메시지를 만드는 프로그램을 만들고 있습니다.

메모에 입력된 축하메시지 양식에서 [Name]과 [Age] 항목을 입력받은 이름과 나이로 치환해 메시지를 표현하는 코드를 완성하세요.

var
  S, S2: string;
  Name, Age: string;
begin
  S := mmoMessage.Lines.Text;
  Name := edtName.Text;
  Age := edtAge.Text;

  S2 := S;
  // S2의 [Name]  항목을 StringReplace  함수를 이용해 입력받은 이름으로 치환하세요.
  // S2의 [Age]  항목을 StringReplace  함수를 이용해 입력받은 나이로 치환하세요.

  ShowMessage(S2);

새로운 프로젝트를 만들어 시작해보세요.
(시작이 어려운 분들은 다운로드 링크를 클릭 해 프로젝트를 다운로드 받아 빈 내용을 완성하세요.)

댓글

댓글 본문
버전 관리
험프리
현재 버전
선택 버전
graphittie 자세히 보기