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
[14891] Re:델파이6에서 특수문자를 제거할수 있을까요
박지훈.임프 [cbuilder] 4217 읽음    2013-12-07 02:44
간단한 거여서 대충 샘플을 만들어봤습니다.

function RemoveSpecialChar(sSrc: string): string;
var
  I: integer;
begin
  for I:=1 to Length(sSrc) do
    if sSrc[I] in [#$20 .. #$7E] then
      result := result + sSrc[I];
end;


위 코드는 한글도 날려버리는데요, 혹시 한글을 남겨야 한다면, 아래와 같이 하면 될 겁니다.

function RemoveSpecialChar(sSrc: string): string;
var
  I: integer;
begin
  for I:=1 to Length(sSrc) do
    if (sSrc[I] in [#$20 .. #$7E]) or (ByteType(sSrc, I)<>mbSingleByte) then
      result := result + sSrc[I];
end;



답변 써놓고 다시 질문을 봤더니 영숫자 외에 모든 문자를 특수문자라고 부르신 거네요. 그럼 다시 덧붙여서.

function RemoveSpecialChar(sSrc: string): string;
var
  I: integer;
begin
  for I:=1 to Length(sSrc) do
    if (sSrc[I] in ['A'..'Z', 'a'..'z', '0'..'9']) or (ByteType(sSrc, I)<>mbSingleByte) then
      result := result + sSrc[I];
end;

한글 고려 안해도 된다면 or 뒤의 조건 없애시면 되고요.
ByteType의 속도가 좀 느리기 때문에 처리 속도 차이가 꽤 날겁니다. 없애도 된다면 없애는 게 낫습니다.



철갑 님이 쓰신 글 :
: 이번에 사용하는 업무가 하필이면 특수문자와 개행문자를 모두 제거한 스트링만 받아야 하는 부분이 있어서 질문 드립니다.
:
: 사용하는건 델파이 6인데요
:
: 직접 찾아보니 TRegEx라는 컴포넌트를 사용하면 된다고 하기에 보니 이건 또 델파이 7 이후에나 지원한다고 보여서
:
: 혹시 델파이 6에서도 특수문자를 전부 제거하는 방식이 있는지 궁금해서 여쭤봅니다.
:
: 원하는 정규식은 [A-Za-z0-9가-힣\s.,] 수준인데 지금은 그걸 억지로 구현하기 위해서 
:
:   rt_text :=StringReplace(rt_text,'!','',[rfReplaceAll]);
:   rt_text :=StringReplace(rt_text,'@','',[rfReplaceAll]);
:   rt_text :=StringReplace(rt_text,'#','',[rfReplaceAll]);
:   rt_text :=StringReplace(rt_text,'$','',[rfReplaceAll]);
:   rt_text :=StringReplace(rt_text,'%','',[rfReplaceAll]);
:   rt_text :=StringReplace(rt_text,'^','',[rfReplaceAll]);
:   rt_text :=StringReplace(rt_text,'&','',[rfReplaceAll]);
:   rt_text :=StringReplace(rt_text,'*','',[rfReplaceAll]);
:   rt_text :=StringReplace(rt_text,'\','',[rfReplaceAll]);
:   rt_text :=StringReplace(rt_text,'|','',[rfReplaceAll]);
:   rt_text :=StringReplace(rt_text,'`','',[rfReplaceAll]);
:   rt_text :=StringReplace(rt_text,'~','',[rfReplaceAll]);
:
: 같은 무식무식한 방법으로 처리하고 있습니다. 혹시 좀더 간단히 처리할 수 있는 방법이 없을까요.

+ -

관련 글 리스트
14888 델파이6에서 특수문자를 제거할수 있을까요 철갑 2231 2013/12/05
14891     Re:델파이6에서 특수문자를 제거할수 있을까요 박지훈.임프 4217 2013/12/07
14892         답변 감사합니다. 철갑 2454 2013/12/07
14890     Re:델파이6에서 특수문자를 제거할수 있을까요 류종택 6893 2013/12/06
14889     Re:델파이6에서 특수문자를 제거할수 있을까요 civilian 3253 2013/12/05
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.