Delphi Programming Forum
C++Builder  |  Delphi  |  FireMonkey  |  C/C++  |  Free Pascal  |  Firebird
볼랜드포럼 BorlandForum
 경고! 게시물 작성자의 사전 허락없는 메일주소 추출행위 절대 금지
델파이 포럼
Q & A
FAQ
팁&트릭
강좌/문서
자료실
컴포넌트/라이브러리
FreePascal/Lazarus
볼랜드포럼 홈
헤드라인 뉴스
IT 뉴스
공지사항
자유게시판
해피 브레이크
공동 프로젝트
구인/구직
회원 장터
건의사항
운영진 게시판
회원 메뉴
북마크
델마당
볼랜드포럼 광고 모집

델파이 Q&A
Delphi Programming Q&A
[10633] Re:StringReplace() 함수
박지훈.임프 [cbuilder] 10347 읽음    2006-04-03 19:49
메모 컴포넌트의 내용은 TStrings 클래스 타입인 Lines 멤버에 들어 있습니다.
TStrings 클래스의 Text 속성을 이용하면 메모의 내용 전체가 string으로 돌아옵니다.

그리고, VCL에는 특정 문자열을 다른 문자열로 치환시키기 위한 StringReplace라는 함수가 있습니다.
function StringReplace(const S, OldPattern, NewPattern: string; Flags: TReplaceFlags): string;

첫번째 인자는 치환대상 전체 문자열이구요.
두번째 인자는 치환할 대상 문자열, 세번째 인자는 치환되어 새로 들어갈 문자열입니다.

마지막 인자는 치환과 관계된 옵션입니다.
이 옵션은 TReplaceFlags이라는 set 타입인데, rfReplaceAll, rfIgnoreCase 두가지를 지정할 수 있습니다.
rfReplaceAll은 대상 문자열 전체에서 다 치환하며, 지정하지 않으면 처음 발견된 문자열만 치환하고 그대로 끝납니다.
rfIgnoreCase는 이름 그대로 대소문자를 구별하지 않는다는 것입니다.

따라서 원하시는 대로 하려면...
Memo1.Lines.Text := StringReplace(Memo1.Lines.Text, '|', ' ', [rfReplaceAll]);

StringReplace 함수를 자주 쓰다보면, 습관적으로 마지막 옵션을 [rfReplaceAll, rfIgnoreCase] 이런 식으로 두개 다
줘버리는 경우도 생기는데, 지금의 예처럼 대소문자 구별을 무시할 필요가 없는 경우에 rfIgnoreCase 옵션을 쓰면
성능상 안좋습니다. rfIgnoreCase 옵션을 주면 일단 전체 문자열을 대문자로 변환한 다음에 검색하므로 전체 문자열의
길이가 대단히 길 경우에는 실행 시간이 쓸데 없이 길어집니다.

그럼...


델초보 님이 쓰신 글 :
: 06 | 01 | 10 | 78 | 53 | KMR |                          06   01   10   78   53   KMR   
: 06 | 02 | 20 | 24 | 92 | KMR |                          06   02   20   24   92   KMR  
: 06 | 03 | 30 | 34 | 14 | KMR |       ==>              06   03   30   34   14   KMR  
: 06 | 04 | 40 | 43 | 78 | KMR |                          06   04   40   43   78   KMR 

:
: 위와같은 텍스트 파일은 메모 컨퍼넌트에 띄웠을때요...
:
: 제가 하고 싶은건... " | " 이게 들어간 문자들을 다 빼고 그 부분을 공백으로 만들고 싶은데요...
:
: 어떻게 해야 하는지... 고수님들... 좀..만.. 알려주세요.ㅜ.ㅜ

+ -

관련 글 리스트
10630 메모컨퍼넌트 사용시.. 궁금점..ㅜㅜ 델초보 1243 2006/04/03
10633     Re:StringReplace() 함수 박지훈.임프 10347 2006/04/03
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.