ITextRange::FindText-Methode (tom.h)
Sucht bis zu Anzahl von Zeichen für den von bstr angegebenen Text. Die Startposition und Die Richtung werden ebenfalls durch Anzahl angegeben, und die Übereinstimmungskriterien werden durch Flags angegeben.
Syntax
HRESULT FindText(
BSTR bstr,
long Count,
long Flags,
long *pLength
);
Parameter
bstr
Typ: BSTR
Zu findende Zeichenfolge.
Count
Typ: long
Maximale Anzahl von zu durchsuchenden Zeichen. Dies kann einer der folgenden Sein:
tomForward | Sucht bis zum Ende der Geschichte. Dies ist der Standardwert. |
n (größer als 0) | Sucht vorwärts nach n zeichen, beginnend bei cpFirst. Wenn der Bereich selbst mit bstr übereinstimmt, wird eine andere Suche von cpFirst + 1 versucht. |
n(kleiner als 0) | Sucht rückwärts nach n Zeichen, beginnend mit cpLim. Wenn der Bereich selbst mit bstr übereinstimmt, wird eine andere Suche von cpLim– 1 versucht. |
0 (degenerierter Bereich) | Die Suche beginnt nach dem Bereich. |
0 (nicht degenerierter Bereich) | Die Suche ist auf den Bereich beschränkt. |
Wenn eine Zeichenfolge gefunden wird, werden die Bereichsgrenzwerte in die der übereinstimmenden Zeichenfolge geändert, und pLength wird auf die Länge der Zeichenfolge festgelegt. Wenn die Zeichenfolge nicht gefunden wird, bleibt der Bereich unverändert, und pLength wird auf null festgelegt.
Flags
Typ: long
Flags, die Vergleiche steuern. Es kann 0 (Standard) oder eine beliebige Kombination der folgenden Werte sein.
tomMatchWord | 2 | Entspricht ganzen Wörtern. |
tomMatchCase | 4 | Entspricht der Groß-/Kleinschreibung. |
tomMatchPattern | 8 | Entspricht regulären Ausdrücken. |
pLength
Typ: long*
Die Länge der zugeordneten Zeichenfolge.
Rückgabewert
Typ: HRESULT
Die -Methode gibt einen HRESULT-Wert zurück. Wenn die Methode erfolgreich ist, wird S_OK zurückgegeben. Wenn die Methode fehlschlägt, wird S_FALSE zurückgegeben. Weitere Informationen zu COM-Fehlercodes finden Sie unter Fehlerbehandlung in COM.
Hinweise
Die ITextRange::FindText-Methode kann auch mit Sonderzeichen übereinstimmen, indem ein Caretzeichen (^) gefolgt von einem speziellen Buchstaben verwendet wird. Eine Liste der Sonderzeichen finden Sie in der Liste Spezial im Dialogfeld Suchen und Ersetzen von Microsoft Word. Entspricht z. ^p
B. der Markierung des nächsten Absatzes. Hinweis, kann verwendet werden, ^c
um den Inhalt der Zwischenablage in der zu ersetzenden Zeichenfolge darzustellen. Daher ermöglicht die Verwendung von ^c
in der Suchzeichenfolge die Suche nach Rich-Text. Weitere Informationen finden Sie in den Word Hilfedateien.
Im Vergleich mit der ITextRange::FindText-Methode sucht die ITextRange::FindTextStart-Methode vorwärts oder rückwärts aus dem Start cp des Bereichs, und die ITextRange::FindTextEnd-Methode sucht vorwärts oder rückwärts aus dem End cp des Bereichs. Weitere Informationen finden Sie in den Beschreibungen dieser Methoden.
Im Folgenden finden Sie mehrere Codeausschnitte, die die ITextRange::FindText-Methoden zeigen.
Beispiel 1. Das folgende Microsoft Visual Basic for Applications -Programm (VBA) druckt alle /* ... */-Kommentare in einer Story, die durch den Bereich r identifiziert wird.
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
Anstatt dass diese Kommentare gedruckt werden, könnten sie in eine andere Bearbeitungs-instance eingefügt und in einer Datei gespeichert werden, oder sie könnten in separate Zellen in einer Tabelle oder einem Arbeitsblatt eingefügt werden.
Um alle Zeilen mit einem oder mehreren Vorkommen des Worts "laser" zu drucken, ersetzen Sie die Schleife durch den folgenden Code:
While r.FindText("laser") // Select next occurrence of "laser"
r.Expand tomLine // Select enclosing line
Print r // Print the line
Wend
Beispiel 2. Das folgende Programm druckt eine Telefonliste, die eine Geschichte enthält, die eine Adressliste enthält. Die Adresslisteneinträge sind durch zwei oder mehr Absatzmarken getrennt, und jeder Eintrag hat das folgende Formular.
Person/Business Name
Address (one or more lines)
(area code) telephone number
Beachten Sie die Verwendung des Zeichens ^p
im FindText-Zeichenfolgenargument , um ein Paar aufeinanderfolgender Absatzmarken zu suchen.
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
Beispiel 3. Die folgende Unterroutine ersetzt alle Vorkommen der Zeichenfolge str1 in einem Bereich durch 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
Beispiel 4. In der folgenden Codezeile wird vor dem ersten Vorkommen einer rechten Klammer "("" ein leerer Text eingefügt, der auf ein Vorkommen von HRESULT folgt.
If r.FindText("HRESULT") And r.FindText("(") Then r = " ("
Ändern Sie dazu in der obigen Codezeile die If-Schleife in eine While/Wend-Schleife. Dies ist ein Beispiel für ein FIND/REPLACE-Makro , das nicht mit den Dialogfeldern Suchen und Ersetzen ausgeführt werden kann.
Anforderungen
Unterstützte Mindestversion (Client) | Windows Vista [nur Desktop-Apps] |
Unterstützte Mindestversion (Server) | Windows Server 2003 [nur Desktop-Apps] |
Zielplattform | Windows |
Kopfzeile | tom.h |
DLL | Msftedit.dll |
Siehe auch
Konzept
Referenz