다음을 통해 공유


ITextRange::FindText 메서드(tom.h)

bstr에서 지정한 텍스트의 최대 개수 문자를 검색합니다. 시작 위치와 방향도 Count로 지정되며 일치 조건은 Flags에 의해 지정됩니다.

구문

HRESULT FindText(
  BSTR bstr,
  long Count,
  long Flags,
  long *pLength
);

매개 변수

bstr

형식: BSTR

찾을 문자열입니다.

Count

형식: long

검색할 최대 문자 수입니다. 다음 중 하나일 수 있습니다.

tomForward 이야기의 끝을 검색합니다. 기본값입니다.
n (0보다 큼) cpFirst부터 n자 앞으로 검색합니다. 범위 자체가 bstr과 일치하면 cpFirst + 1에서 다른 검색이 시도됩니다.
n(0 미만) cpLim 에서 시작하여 n 문자를 뒤로 검색합니다.범위 자체가 bstr과 일치하면 cpLim – 1에서 다른 검색이 시도됩니다.
0(퇴화 범위) 범위 다음에 검색이 시작됩니다.
0(비일반 범위) 검색은 범위로 제한됩니다.
 

모든 경우에 문자열이 발견되면 범위 제한이 일치하는 문자열의 범위로 변경되고 pLength 는 문자열의 길이와 동일하게 설정됩니다. 문자열을 찾을 수 없는 경우 범위는 변경되지 않고 pLength 는 0으로 설정됩니다.

Flags

형식: long

비교를 제어하는 플래그입니다. 0(기본값) 또는 다음 값의 조합일 수 있습니다.

tomMatchWord 2 전체 단어와 일치합니다.
tomMatchCase 4 대/소문자를 일치합니다.
tomMatchPattern 8 정규식과 일치합니다.

pLength

형식: long*

일치하는 문자열의 길이입니다.

반환 값

형식: HRESULT

메서드는 HRESULT 값을 반환합니다. 메서드가 성공하면 S_OK 반환합니다. 메서드가 실패하면 S_FALSE 반환합니다. COM 오류 코드에 대한 자세한 내용은 COM에서 오류 처리를 참조하세요.

설명

ITextRange::FindText 메서드는 캐럿(^) 뒤에 특수 문자를 사용하여 특수 문자를 일치시킬 수도 있습니다. 특수 문자 목록은 Microsoft Word 찾기 및 바꾸기 대화 상자에서 사용할 수 있는 특수 목록을 참조하세요. 예를 들어 는 ^p 다음 단락 표시와 일치합니다. ^c 는 바꿀 문자열의 클립보드 콘텐츠를 나타내는 데 사용할 수 있습니다. 따라서 찾기 문자열에서 를 사용하면 ^c 서식 있는 텍스트를 검색할 수 있습니다. 자세한 내용은 Word 도움말 파일을 참조하세요.

ITextRange::FindText 메서드와 비교하여 ITextRange::FindTextStart 메서드는 범위의 Start cp에서 앞뒤로 검색하고, ITextRange::FindTextEnd 메서드는 범위의 End cp에서 앞뒤로 검색합니다. 자세한 내용은 이러한 메서드에 대한 설명을 참조하세요.

다음은 ITextRange::FindText 메서드를 보여 주는 몇 가지 코드 조각입니다.

예제 #1. 다음 Microsoft Visual Basic for Applications(VBA) 프로그램은 r 범위로 식별된 스토리에 모든 /* ... */ 주석을 출력합니다.

Sub PrintComments (r As ITextRange)
    r.SetRange 0, 0                                      'r = insertion pt at start of story
    Do While r.FindText("/*") And r.FindTextEnd("*/")    'Select comment
        r.MoveStart tomCharacter, 2                      'But do not include the opening or 
                                                         'closing comment brackets
        r.MoveEnd tomCharacter, -2                       
        Print r                                          'Show the folks
    Loop
End Sub

이러한 주석을 인쇄하는 대신 다른 편집 instance 삽입하여 파일에 저장하거나 표나 스프레드시트의 별도 셀에 삽입할 수 있습니다.

하나 이상의 단어 "laser"가 포함된 모든 줄을 인쇄하려면 루프를 다음 코드로 바꿉니다.

    While r.FindText("laser")            // Select next occurrence of "laser"
        r.Expand tomLine                // Select enclosing line    
        Print r                    // Print the line
    Wend

예제 #2. 다음 프로그램은 주소 목록이 포함된 스토리가 지정된 전화 목록을 인쇄합니다. 주소 목록 항목은 두 개 이상의 단락 표시로 구분되며 각 항목에는 다음과 같은 형식이 있습니다.

Person/Business Name
Address (one or more lines)
(area code) telephone number 

FindText 문자열 인수에서 문자를 ^p 사용하여 한 쌍의 연속 단락 표시를 찾습니다.

Sub PrintTelephoneList (r As ITextRange)
    r.SetRange 0, 0                 // r = insertion point at start of story
    r.MoveWhile C1_WHITE            // Bypass any initial white space
    Do
        r.EndOf tomParagraph, 1     // Select next para (line): has name
        Print r                    // Print it
        Do
            r.MoveWhile C1_SPACE        // Bypass possible space chars
            If r.Char = Asc("(") Then Exit Do    // Look for start of telephone #
        Loop While r.Move(tomParagraph)    // Go to next paragraph
        r.EndOf tomParagraph, 1        // Select line with telephone number
        Print r                    // Print it
    Loop While r.FindText("^p^p")        // Find two consecutive para marks
End Sub

예제 #3. 다음 서브루틴은 범위의 모든 문자열 str1을 str2로 바꿉니다.

Sub Replace ( tr As ITextRange, str1 As String, str2 As String )
    Dim r As ITextRange
    r = tr.Duplicate                // Copy tr parameters to r
    r.End = r.Start                    // Convert to insertion point at Start
    While r.FindText(str1, tr.End - r.End)        // Match next occurrence of str
        r = str2                // Replace it with rep
    Wend                        // Iterate till no more matches
End Sub

예제 #4. 다음 코드 줄은 HRESULT 발생 후 오른쪽 괄호 "(")가 처음 나타나는 앞에 공백을 삽입합니다.

    If r.FindText("HRESULT") And r.FindText("(") Then r = " ("

이러한 모든 항목에 대해 이 작업을 수행하려면 위의 코드 줄에서 If를 While/Wend 루프로 변경합니다. 찾기 및 바꾸기 대화 상자로 실행할 수 없는 FIND/REPLACE 매크로의 예입니다.

요구 사항

   
지원되는 최소 클라이언트 Windows Vista [데스크톱 앱만 해당]
지원되는 최소 서버 Windows Server 2003 [데스크톱 앱만 해당]
대상 플랫폼 Windows
헤더 tom.h
DLL Msftedit.dll

추가 정보

개념

FindTextEnd

FindTextStart

ITextRange

참조

텍스트 개체 모델