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 |
추가 정보
개념
참조