문자열에 하위 문자열이 있지만 특정 위치에만 있는지 확인할 수 있습니까?문자열에 단어가 있지만 특정 위치에만 있는지 확인하십시오.
예 문자열 : 당신의 좋아하는 색상은 무엇
입니까? 내가 문자열이 나는 보통 이렇게 특정 단어가 포함되어 있는지 확인하고 싶었다면 내 [좋아하는] 색상은
파란색입니다 : 내가 필요한 것은
var
S: string;
begin
S := 'What is your favorite color? my [favorite] color is blue';
if (Pos('favorite', S) > 0) then
begin
//
end;
end;
가 결정하는 경우 단어 좋아이 문자열에 존재하지만, 위의 코드 샘플에서 분명히하지 않는 [] 기호 안에 나타나면 무시됩니다. 우리는 부울 함수에 코드를 넣어 경우
그래서, 일부 샘플 결과는 다음과 같습니다
TRUE : 당신의 좋아하는 색상은 무엇입니까? 내 [내가 좋아하는] 색상은 파란색입니다
TRUE : 당신의 좋아하는 색상은 무엇입니까? 내 [ㅋ ㅋ ㅋ ㅋ] 색상은 파란색입니다
FALSE : 당신의 ㅋ ㅋ ㅋ ㅋ 색상은 무엇입니까? 단어 좋아하는이 그들 내부에 있는지 여부에 관계없이 [] 기호 외부에서 검출되기 때문에 내 [일부 좋아하는] 색상은 블루
처음 두 샘플 위에 해당한다.
좋아하는 단어가 있더라도 [] 기호 안에 만 나오므로 기호의 바깥에만 있는지 확인해야하기 때문에 세 번째 예제는 false입니다.
그래서 단어 (이 예에서는 즐겨 찾기)가 문자열에 나타나는지를 결정해야하지만 단어가 [] 기호로 둘러싸여 있다면 사실을 무시해야합니다.
아이디어 : 1) '\ s'에 문자열을 분할하고 네 번째 요소를 확인하십시오. 2)'마음에 드는'이 있는지 확인하십시오 (단어 주위의 공백에주의하십시오). 3) 문자열을 물음표 '?'로 나눈 다음 '즐겨 찾기'가 있는지 확인하십시오. –
검색 '[', 검색이 발견되면 ']', 중간에 '[]'포함하여 삭제하고 즐겨 찾기를 검색하십시오. –
또는 정규 표현식 (XE에 포함 된 단위 포함)을' '\ b'+ wordtofind + '\ b'' 정규식으로 사용하십시오. 당신이주의해야 할 유일한 것은 '그것은 좋아하는가요?'입니다,'? '는 일치하지 않을 것입니다. –