Suchen und Ersetzen

Manchmal ist es ganz praktisch, mehrere verschiedene Suchen/Ersetzen-Läufe in einem Makro kombinieren zu können. Oder der Cursor soll gezielt auf gewisse Inhalte gesetzt werden. Zu diesem Zweck stehen in StarBasic sämtliche Möglichkeiten des «Suchen & Ersetzen»-Dialoges zur Verfügung. Die kommenden Ausführungen beziehen sich primär auf die Suche, gelten aber ebenso für das Ersetzen. In den meisten Fällen reicht die Verwendung von Replace an Stelle von Search in den Methoden-Aufrufen, sowie ein zusätzlicher Parameter für die zu ersetzende Zeichenkette.

Mittels

ActiveWindow.Search(SearchString$)

lässt es sich ganz einfach nach Inhalten suchen. RepeatSearch() wiederholt die letzte Suche. Dabei werden die Einstellungen berücksichtigt, die im Dialog zuletzt gemacht wurden. Ohne Parameter wird dieser aufgerufen. Natürlich ist es in einem Makro unpraktisch, wenn man solche Einstellungen über einen Dialog machen muss. Aus diesem Grund steht das SearchSettings-Objekt zur Verfügung. Dieses lässt über zahlreiche Eigenschaften die Konfiguration der Such-Funktion zu:

ActiveWindow.SearchSettings.InSelection = True
ActiveWindow.SearchSettings.CaseSensitive = True
ActiveWindow.SearchSettings.WordOnly = True
ActiveWindow.Search("mh")

Mit diesem Aufruf werden beispielsweise nur jene Vorkommen von «mh» gefunden, welche klein geschrieben, als ganzes Wort in der markierten Auswahl stehen.

Global Suchen und Ersetzen

Erstaunlicherweise gibt es keinen Schalter in SearchSettings für die globale Suche im ganzen Dokument. Dafür wurde gleich eine eigene Methode implementiert, ebenso natürlich für das Ersetzen

ActiveWindow.SearchAll("mh")
ActiveWindow.ReplaceAll("mh", "Michael Herger")

Anzahl Vorkommen eines Begriffs im Dokument zählen

Will man nur zählen, wie oft ein Begriff im Dokument vorkommt, so hilft die verwandte Methode

ActiveWindow.SearchCount(SearchString$)

Diese liefert als Rückgabewert eine Zahl, ohne aber wie Search() zu den einzelnen Fundstellen zu springen.

Suche nach Formatierungen

Eine erweiterte Möglichkeit, die nur in StarWriter, nicht aber in den anderen SO-Modulen zur Verfügung steht, ist das Suchen und Ersetzen von Formatierungen. Hierfür steht wiederum ein eigenes Objekt mit zahlreichen Eigenschaften zur Verfügung: ActiveWindow.SearchAttributes. Hier können fast alle Formatierungsmöglichkeiten von Zeichen (siehe auch «Die Font-Eigenschaft») und Absatzvorlagen gesucht und ersetzt (mit ReplaceAttributes) werden. Mit den folgenden Eigenschaften werden alle Zeichen, die bisher fett und kursiv formatiert waren, nur mehr kursiv dargestellt:

ActiveWindow.SearchAttribute.IsItalic = 1
ActiveWindow.SearchAttribute.IsBold = 1
ActiveWindow.ReplaceAttribute.IsBold = 0

Suche Regulärer Ausdrücke

Ein generell ganz mächtiges Werkzeug bei der Textbearbeitung sind die regulären Ausdrücke. Im StarOffice stehen die auf für das Suchen und (beschränkt) Ersetzen von Texten zur Verfügung. Aktiviert wird sie durch

ActiveWindow.SearchSettings.RegExp = True

Danach ist es beispielsweise möglich, mit folgendem Ausdruck in einem mit harten Zeilenschaltungen formatierten Text sämtliche Leerzeilen zu entfernen:

ActiveWindow.ReplaceAll("^$", "")

Alle möglichen Schreibarten von «Meier» werden mit folgendem Ausdruck gefunden:

ActiveWindow.SearchAll("M[ae][iy]er")

Weitere Informationen zu den regulären Ausdrücken, die vom SO unterstützt werden, findet sich in der Online-Hilfe für die Such-Funktion (aus dem Dialog per rechte Maustaste aufzurufen). Ein schönes Beispiel für das Suchen und Ersetzen im Allgemeinen und eine Möglichkeit der Anwendung regulärer Ausdrücke ist in Form des Beispiels «ROT13-Verschlüsselung für Textdokumente» verfügbar.



Letzte Änderung: 26.03.98
Copyright ©1998 by Michael Herger