Q&A

  • 문자열중에서 알파벳이나 숫자가 아닌 특수문자를 찾기
문자열중에서 알파벳이나 숫자가 아닌 특수문자를 찾을려고 하는데 어떤방법이 없을까요?

예를들어 "123%adsfgyt>ghjgdsa:" 라는 문자열중에서 ">"을 기준으로해서
"%" 와  ":" 를 찾으려고 합니다.  
여기서 "%" 와  ":" 는 예일뿐이고 다른 특수문자가 올수도 있습니다.

어쨌던 숫자나 알파벳이아닌 특수문자를 ">"을 기준으로 해서 찾고싶습니다.

초보라서 도대체 감이....

답변 부탁드리겠습니다.
4  COMMENTS
  • Profile
    타락천사 2002.02.28 23:51
    안녕하세요.. 타락임다..^^

    혼자서 해결할수 있었던 문제라는 생각이 들어, 좀 아쉽습니다.

    아래와 같이 하시면 됍니다.

    var
      strBuf : string;
      strEarly, strLate: string;
      nPos : integer;

      nPercent, nColon: integer;
      strEarlyPercent, strLatePercent: string;
      strEarlyColon, strLateColon: string;
    begin
      strBuf := '123%adsfgyt>ghjgdsa:';

      nPos := Pos('>', strBuf);

      if nPos <= 0 then exit;

      strEarly := Copy(strBuf, 1, nPos - 1);
      strLate := Copy(strBuf, nPos + 1, Length(strBuf));

      nPercent := Pos('%', strEarly);

      if nPercent > 0 then
      begin
        strEarlyPercent := Copy(strEarly, 1, nPercent - 1);
        strLatePercent := Copy(strEarly, nPercent + 1, Length(strEarly));
      end;

      nColon := Pos(':', strLate);

      if nColon > 0 then
      begin
        strEarlyColon := Copy(strLate, 1, nColon - 1);
        strLateColon := Copy(strLate, nColon + 1, Length(strLate));
      end;

    즐푸하세요.. ^^

    타락천사...

    뱀다리: 저두 첨 시작했을때 고민했던 문제랍니다. 상심마라여..^o^
  • Profile
    박희경 2002.03.01 07:41
  • Profile
    *^^* 2002.02.28 20:06
         j := pos('>',Edit1.Text);

         //////      '>' 문자가 나오기 전까지...        ///////
         for i := 1  to j-1 do
         begin
         if ((Edit1.Text[i] >= 'a') and (Edit1.Text[i] <= 'z')) or
            ((Edit1.Text[i] >= 'A') and (Edit1.Text[i] <= 'Z')) or
            ((Edit1.Text[i] >= '0') and (Edit1.Text[i] <= '9')) then
         begin
         end
         else
         begin
              s1 := s1 + Edit1.Text[i];
         end;
         end;

         //////      '>' 문자가 나온 다음부터...       ///////

         for i := j+1  to  Length(Edit1.Text) do
         begin
         if ((Edit1.Text[i] >= 'a') and (Edit1.Text[i] <= 'z')) or
            ((Edit1.Text[i] >= 'A') and (Edit1.Text[i] <= 'Z')) or
            ((Edit1.Text[i] >= '0') and (Edit1.Text[i] <= '9')) then
        begin
        end
        else
        begin
              s2 := s2 + Edit1.Text[i];
         end;
         end;

         Edit2.Text := s1;
         Edit3.Text := s2;

         .......대충 해봤는데..위에꺼 붙여넣기 해서 실행해보세여..
         응용해서 사용하시문 될꺼예염..

  • Profile
    이추형 2002.02.28 18:57
    저의 경우 데이타가 많다는 전제하에 RichEdit의 FindText를 권합니다.
    이것이 그러니까 EDIT PROGRAM의 찾기 기능이거든요

    쉽게 하시려면 문자Length만큼 Loop을 돌면서 하셔두 되겠지만...
    문제는 특수문자의 정의입니다. 어느것 어느것을 특수문자로 정의 하느냐에
    따라 시간이 오래걸리겠죠... 시간 소요가 많다면 않쓰는만 못하니...

    Sample은 따로 올리지 않겠습니다. Delphi Help 참조