그냥 특정문자를 지우는 것을 단순하게 함 만들어 보면 어떨까요?
정규식을 꼭 써야 하는 경우가 아니라면..
function DeleteChar(CharList, Str:string):string;
begin
Result := '';
for i := 1 to Length(Str) do
if Pos(Str[Loop], CharList) = 0 then Result := Result + Str[Loop];
end;
rt_text := DeleteChar('!@#$%^&*()....', rt_text);
철갑 님이 쓰신 글 :
: 이번에 사용하는 업무가 하필이면 특수문자와 개행문자를 모두 제거한 스트링만 받아야 하는 부분이 있어서 질문 드립니다.
:
: 사용하는건 델파이 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]);
:
: 같은 무식무식한 방법으로 처리하고 있습니다. 혹시 좀더 간단히 처리할 수 있는 방법이 없을까요.
|