초보입니다. Pos함수를 사용하여 문자의 위치를
알아낼수 있습니다만, 조건이 있을 경우 어떻게
하면 될까요? 예를들어
noPos := Pos('aa',myString); 이라고하면 'aa'의
첫부분 위치가 noPos에 들어갑니다. 헌데 조건을 붙여서
'aa'의 위치를 찾았어도 'aa'의 앞에 내가 지정하는 문자가
들어있을 경우(예를 들어 'aa'의 앞에 위치한 문자가 #, & 등으로 -> #aa, $aa)
는 skip하고 다음위치를 찾도록 하고 싶은대요
어떻게 하면 좋을까요
>
> 초보입니다. Pos함수를 사용하여 문자의 위치를
> 알아낼수 있습니다만, 조건이 있을 경우 어떻게
> 하면 될까요? 예를들어
>
> noPos := Pos('aa',myString); 이라고하면 'aa'의
> 첫부분 위치가 noPos에 들어갑니다. 헌데 조건을 붙여서
> 'aa'의 위치를 찾았어도 'aa'의 앞에 내가 지정하는 문자가
> 들어있을 경우(예를 들어 'aa'의 앞에 위치한 문자가 #, & 등으로 -> #aa, $aa)
> 는 skip하고 다음위치를 찾도록 하고 싶은대요
>
> 어떻게 하면 좋을까요
>
음냐...
pos()함수를 쓰면 해당 위치의 정수값이 되돌려지죠....
그럼, 이렇게....
var
ln, ln2, tmpPos: Integer;
tmpStr, tmp: String;
begin
ln := Length(myString);
tmpStr := myString;
tmp := 'aa';
ln2 := Length(tmp);
while True do
begin
tmpPos := Pos(tmp, tmpStr);
If tmpPos = 0 then Break;
If Copy(tmpStr, tmpPos-1, 1) <> '#' then Break;
//'#'이랑 틀렸을 경우입니다.
tmpStr := Copy(tmpStr, tmpPos+ln2, ln - tmpPos);
If tmpStr = '' then Break;
end;
end;