문자 자료형
문자열/문자 사용
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);
새로운 프로젝트를 만들어 시작해보세요.
(시작이 어려운 분들은 다운로드 링크를 클릭 해 프로젝트를 다운로드 받아 빈 내용을 완성하세요.)