Difference between revisions of "NL/Documentation/BASIC Guide/Editing Text Documents"

From Apache OpenOffice Wiki
Jump to: navigation, search
(Searching for Text Portions)
(Zoeken naar gedeelten van de tekst)
Line 215: Line 215:
 
</source>
 
</source>
  
Met betrekking tot zijn functie, kan de <tt>SearchDescriptor</tt> het best worden vergeleken met het dialoogvenster Zoeken uit {{OOo}}. Op eenzelfde manier als in het venster Zoeken, kunnen de instellingen voor de zoekactie worden ingesteld in het object <tt>SearchDescriptor</tt>.  
+
Met betrekking tot zijn functie kan de <tt>SearchDescriptor</tt> het best worden vergeleken met het dialoogvenster Zoeken uit {{OOo}}. Op eenzelfde manier als in het venster Zoeken, kunnen de instellingen voor de zoekactie worden ingesteld in het object <tt>SearchDescriptor</tt>.  
  
 
De eigenschappen worden verschaft door de service <idl>com.sun.star.util.SearchDescriptor</idl>:  
 
De eigenschappen worden verschaft door de service <idl>com.sun.star.util.SearchDescriptor</idl>:  
  
;<tt>SearchBackwards (Boolean)</tt>:searches through the text backward rather than forward.
+
;<tt>SearchBackwards (Boolean)</tt>:zoekt achterwaarts dor de tekst in plaats van naar voren.
;<tt>SearchCaseSensitive (Boolean)</tt>:takes uppercase and lowercase characters into consideration during the search.
+
;<tt>SearchCaseSensitive (Boolean)</tt>:houdt rekening met hoofd- en kleine letters tijdens het zoeken.
;<tt>SearchRegularExpression (Boolean)</tt>:treats the search expression like a regular expression.
+
;<tt>SearchRegularExpression (Boolean)</tt>:behandelt de zoekuitdrukking als een reguliere uitdrukking.
;<tt>SearchStyles (Boolean)</tt>:searches through the text for the specified paragraph template.
+
;<tt>SearchStyles (Boolean)</tt>:zoekt door de tekst naar het gespecificeerde alineaopmaakprofiel.
;<tt>SearchWords (Boolean)</tt>:only searches for complete words.
+
;<tt>SearchWords (Boolean)</tt>:zoekt alleen naar hele woorden.
  
The {{OOo}} <tt>SearchSimilarity</tt> (or “fuzzy match”) function is also available in {{OOo}} Basic. With this function, {{OOo}} searches for an expression that may be similar to but not exactly the same as the search expression. The number of additional, deleted and modified characters for these expressions can be defined individually. Here are the associated properties of the <tt>com.sun.star.util.SearchDescriptor</tt> service:
+
De functie <tt>SearchSimilarity</tt> (of “vage overeenkomst”) van {{OOo}} is ook beschikbaar in {{OOo}} BASIC. Met deze functie, zoekt {{OOo}} naar een uitdrukking die overeenkomt, maar niet geheel gelijk is aan de zoek-uitdrukking. Het aantal toegevoegde, weggelaten of aangepaste tekens voor deze uitdrukking kan individueel worden gedefinieerd. Hier zijn de geassocieerde eigenschappen van de service <tt>com.sun.star.util.SearchDescriptor</tt>:
  
;<tt>SearchSimilarity (Boolean)</tt>:performs a similarity search.
+
;<tt>SearchSimilarity (Boolean)</tt>:voert een zoekactie naar overeenkomsten uit.
;<tt>SearchSimilarityAdd (Short)</tt>:number of characters which may be added for a similarity search.
+
;<tt>SearchSimilarityAdd (Short)</tt>:aantal tekens dat mag worden toegevoegd voor een zoekactie op overeenkomsten.
;<tt>SearchSimilarityExchange (Short)</tt>:number of characters which may be replaced as part of a similarity search.
+
;<tt>SearchSimilarityExchange (Short)</tt>:aantal tekens dat mag worden vervangen als deel van een zoekactie op overeenkomsten.
;<tt>SearchSimilarityRemove (Short)</tt>:number of characters which may be removed as part of a similarity search.
+
;<tt>SearchSimilarityRemove (Short)</tt>:aantal tekens dat mag worden verwijderd als deel van een zoekactie op overeenkomsten.
;<tt>SearchSimilarityRelax (Boolean)</tt>:takes all deviation rules into consideration at the same time for the search expression.
+
;<tt>SearchSimilarityRelax (Boolean)</tt>:houdt gelijktijdig rekening met alle afwijkende regels voor de zoekuitdrukking.
  
Once the <tt>SearchDescriptor</tt> has been prepared as requested, it can be applied to the text document. The {{OOo}} documents provide the <tt>findFirst</tt> and <tt>findNext</tt> methods for this purpose:  
+
Als de <tt>SearchDescriptor</tt> eenmaal is voorbereid zoals gewenst, kan hij worden toegepast op het tekstdocument. De documenten van {{OOo}} verschaffen de methoden <tt>findFirst</tt> en <tt>findNext</tt> voor dit doel:
  
 
<source lang="oobas">
 
<source lang="oobas">
Found = Doc.findFirst (SearchDesc)
+
Gevonden = Doc.findFirst (SearchDesc)
  
Do Until IsNull(Found)
+
Do Until IsNull(Gevonden)
   ' Edit search results...
+
   ' Bewerk de resultaten van de zoekactie...
   Found = Doc.findNext( Found.End, SearchDesc)
+
   Gevonden = Doc.findNext(Gevonden.End, SearchDesc)
 
Loop
 
Loop
 
</source>
 
</source>
  
The example finds all matches in a loop and returns a <tt>TextRange</tt> object, which refers to the found text passage.
+
Het voorbeeld vindt alle overeenkomsten in een lus en geeft een object <tt>TextRange</tt> weer, dat refereert aan de gevonden passage in de tekst.
  
=== Example: Similarity Search ===
+
=== Voorbeeld: zoekactie naar overeenkomsten ===
  
This example shows how a text can be searched for the word "turnover" and the results formatted in bold type. A similarity search is used so that not only the word “turnover”, but also the plural form "turnovers" and declinations such as "turnover's" are found. The found expressions differ by up to two letters from the search expression:
+
Dit voorbeeld toont hoe een tekst kan worden doorzocht naar het woord “verandering” en het resultaat opgemaakt als type Vet. Een zoekactie naar overeenkomsten wordt gebruikt zodat niet alleen het woord “verandering”, maar ook de meervoudsvorm "veranderingen" en vervoegingen zoals "verandering's" worden gevonden. De gevonden uitdrukkingen verschillen tot maximaal twee letters van de zoek-uitdrukking:
  
 
<source lang="oobas">
 
<source lang="oobas">
Line 256: Line 256:
 
Doc = ThisComponent
 
Doc = ThisComponent
 
SearchDesc = Doc.createSearchDescriptor
 
SearchDesc = Doc.createSearchDescriptor
SearchDesc.SearchString="turnover"
+
SearchDesc.SearchString="verandering"
 
SearchDesc.SearchSimilarity = True
 
SearchDesc.SearchSimilarity = True
 
SearchDesc.SearchSimilarityAdd = 2
 
SearchDesc.SearchSimilarityAdd = 2
Line 264: Line 264:
 
Found = Doc.findFirst (SearchDesc)
 
Found = Doc.findFirst (SearchDesc)
  
Do Until IsNull(Found)
+
Do Until IsNull(Gevonden)
   Found.CharWeight = com.sun.star.awt.FontWeight.BOLD
+
   Gevonden.CharWeight = com.sun.star.awt.FontWeight.BOLD
   Found = Doc.findNext( Found.End, SearchDesc)
+
   Gevonden = Doc.findNext(Gevonden.End, SearchDesc)
 
Loop
 
Loop
 
</source>
 
</source>

Revision as of 16:14, 11 February 2013

Book.png


In het vorige gedeelte is al een groot bereik aan opties besproken voor het bewerken van tekstdocumenten, geconcentreerd op de services com.sun.star.text.TextPortion en com.sun.star.text.Paragraph, welke toegang verlenen tot zowel de alinea's als de alinea-gedeelten. Deze services zijn nuttig voor toepassingen waarin de inhoud van een tekst moet worden bewerkt in één doorloop via een lus. Dit is echter voor veel problemen niet voldoende. Apache OpenOffice verschaft de service com.sun.star.text.TextCursor voor meer gecompliceerde taken, inclusief achterwaartse navigatie binnen een document of navigatie gebaseerd op zinnen en woorden in plaats van op TekstDelen.

De TextCursor

Een TextCursor in de API van Apache OpenOffice is te vergelijken met de zichtbare cursor die wordt gebruikt in een document van Apache OpenOffice. Het markeert een bepaald punt binnen een tekst en waar vandaan kan worden genavigeerd in diverse richtingen met behulp van opdrachten. De beschikbare objecten tt>TextCursor</tt> in Apache OpenOffice BASIC moeten echter niet verward worden met de zichtbare cursor. Dit zijn twee heel verschillende dingen.

Documentation note.png VBA : Terminologie verschilt van die in VBA gebruikt wordt: In termen van bereik van functie, het object Range van VBA kan worden vergeleken met het object TextCursor in Apache OpenOffice en niet – zoals de naam misschien suggereert– met het object Range in Apache OpenOffice.


Het object TextCursor in Apache OpenOffice, bijvoorbeeld, verschaft methoden om te navigeren en wijzigen van tekst die zijn opgenomen in het object Range in VBA (bijvoorbeeld, MoveStart, MoveEnd, InsertBefore, InsertAfter). De corresponderende onderdelen van het TextCursor object in Apache OpenOffice worden beschreven in het volgende gedeelte.

Navigeren binnen een tekst

Het object TextCursor in Apache OpenOffice BASIC werkt onafhankelijk van de zichtbare cursor in een tekstdocument. Een programma-gecontroleerde positie-verandering van een TextCursor object heeft geen enkel effect op de zichtbare cursor. Diverse objecten TextCursor kunnen zelfs geopend zijn voor hetzelfde document en gebruikt op verschillende posities, welke onafhankelijk van elkaar zijn.

Een object TextCursor wordt gemaakt met behulp van de aanroep createTextCursor:

Dim Doc As Object
Dim Cursor As Object
 
Doc = ThisComponent
Cursor = Doc.Text.createTextCursor()

Het op deze manier gemaakte object Cursor ondersteunt de service com.sun.star.text.TextCursor, welke op zijn beurt een groot scala aan methoden voor het navigeren binnen tekstdocumenten verschaft. Het volgende voorbeeld verplaatst eerst de TextCursor tien tekens naar links en dan drie tekens naar rechts:

Cursor.goLeft(10, False)
Cursor.goRight(3, False)

Een TextCursor kan een compleet gebied accentueren. Dit kan worden vergeleken met het accentueren van een punt in de tekst, met behulp van de muis. De parameter False in de vorige aanroep van de functie specificeert of het gebied waar de cursor zich over verplaatst, wordt geaccentueerd. Bijvoorbeeld, de TextCursor in het volgende voorbeeld

Cursor.goRight(10, False)
Cursor.goLeft(3, True)

verplaatst eerst tien tekens naar links zonder accentuering en gaat dan drie tekens terug en accentueert dat. Het geaccentueerde gebied door de TextCursor begint daarom na het zevende teken in de tekst en eindigt na het tiende teken.

Hier zijn de centrale methoden die de service com.sun.star.text.TextCursor verschaft voor navigatie:

goLeft (Aantal, Uitgebreid)
springt Aantal tekens naar links.
goRight (Aantal, Uitgebreid)
springt Aantal tekens naar rechts.
gotoStart (Uitgebreid)
springt naar het begin van het tekstdocument.
gotoEnd (Uitgebreid)
springt naar het einde van het tekstdocument.
gotoRange (TekstBereik, Uitgebreid)
springt naar het opgegeven object TekstBereik.
gotoStartOfWord (Uitgebreid)
springt naar het begin van het huidige woord.
gotoEndOfWord (Uitgebreid)
springt naar het einde van het huidige woord.
gotoNextWord (Uitgebreid)
springt naar het begin van het volgende woord.
gotoPreviousWord (Uitgebreid)
springt naar het begin van het vorige woord.
isStartOfWord ()
geeft True terug als de TextCursor aan het begin van een woord staat.
isEndOfWord ()
geeft True terug als de TextCursor aan het einde van een woord staat.
gotoStartOfSentence (Uitgebreid)
springt naar het begin van de huidige zin.
gotoEndOfSentence (Uitgebreid)
springt naar het einde van de huidige zin.
gotoNextSentence (Uitgebreid)
springt naar het begin van de volgende zin.
gotoPreviousSentence (Uitgebreid)
springt naar het begin van de vorige zin.
isStartOfSentence ()
geeft True terug als de TextCursor aan het begin van een zin staat.
isEndOfSentence ()
geeft True als de TextCursor aan het einde van een zin staat.
gotoStartOfParagraph (Uitgebreid)
springt naar het begin van de huidige alinea.
gotoEndOfParagraph (Uitgebreid)
springt naar het einde van de huidige alinea.
gotoNextParagraph (Uitgebreid)
springt naar het begin van de volgende alinea.
gotoPreviousParagraph (Uitgebreid)
springt naar het begin van de vorige alinea.
isStartOfParagraph ()
geeft True terug als de TextCursor aan het begin van een alinea staat.
isEndOfParagraph ()
geeft True terug als de TextCursor aan het einde van een alinea staat.

De tekst wordt onderverdeeld in zinnen op basis van de symbolen voor zinnen. Punten worden bijvoorbeeld geïnterpreteerd als symbolen die het einde van zinnen aanduiden. (In het Engels, ten minste, moeten zij worden gevolgd door een spatie, tab of return om dit te laten werken.)

De parameter Expand is een Booleaanse waarde die specificeert of het gebied dat wordt gepasseerd tijdens het navigeren moet worden geaccentueerd. Alle methoden voor navigatie geven verder een parameter met Booleaanse waarde weer die aangeeft of de navigatie succesvol was of dat de actie werd beëindigd door gebrek aan tekst. Het volgende is een lijst van verschillende methoden voor het bewerken van geaccentueerde gebieden met behulp van een TextCursor en die tevens de service com.sun.star.text.TextCursor ondersteunen:


collapseToStart ()
herstelt het accentueren en plaatst de TextCursor aan het begin van het eerder geaccentueerde gebied.
collapseToEnd ()
herstelt het accentueren en plaatst de TextCursor aan het einde van het eerder geaccentueerde gebied.
isCollapsed ()
geeft True terug als de TextCursor momenteel geen accentuering bevat.

Opmaken van Tekst met TextCursor

De service com.sun.star.text.TextCursor ondersteunt alle teken- en alinea-eigenschappen die werden gepresenteerd aan het begin van dit hoofdstuk.

Het volgende voorbeeld toont hoe deze kunnen worden gebruikt in samenwerking met een TextCursor. Het gaat door een compleet document en maakt het eerste woord van elke zin op als type Vet.

Dim Doc As Object   
Dim Cursor As Object
Dim Doorgaan As Boolean
 
Doc = ThisComponent
Cursor = Doc.Text.createTextCursor
 
Do 
  Cursor.gotoEndOfWord(True)
  Cursor.CharWeight = com.sun.star.awt.FontWeight.BOLD
  Doorgaan = Cursor.gotoNextSentence(False)
  Cursor.gotoNextWord(False)
Loop While Doorgaan

Het voorbeeld maakt eerst een documentobject voor de tekst die zojuist geopend werd. Dan doorloopt het de gehele tekst, zin na zin, en accentueert elk eerste woord en maakt dat op in Vet.

Terugvinden en wijzigen van de inhoud van tekst

Als een TextCursor een geaccentueerd gebied bevat, dan is deze tekst beschikbaar door middel van de eigenschap String van het object TextCursor. Het volgende voorbeeld gebruikt de eigenschap String om het eerste woord van een zin in een berichtenvenster weer te geven:

Dim Doc As Object   
Dim Cursor As Object
Dim Doorgaan As Boolean
 
Doc = ThisComponent
Cursor = Doc.Text.createTextCursor
 
Do 
  Cursor.gotoEndOfWord(True)
  MsgBox Cursor.String
  Doorgaan = Cursor.gotoNextSentence(False)
  Cursor.gotoNextWord(False)
Loop While Doorgaan

Het eerste woord van elke zin kan op dezelfde manier worden gewijzigd met behulp van de eigenschap String:

Dim Doc As Object   
Dim Cursor As Object
Dim Doorgaan As Boolean
 
Doc = ThisComponent
Cursor = Doc.Text.createTextCursor
 
Do 
  Cursor.gotoEndOfWord(True)
  Cursor.String = "Oeps"
  Proceed = Cursor.gotoNextSentence(False)
  Cursor.gotoNextWord(False)
Loop While Doorgaan

Als de TextCursor een geaccentueerd gebied bevat, vervangt een toewijzing aan de eigenschap String hierdoor de oude tekst. Als er geen geaccentueerd gebied is, wordt de tekst ingevoegd op de huidige positie van TextCursor.

Invoegen van codes voor beheer

In sommige situaties is het niet de echte tekst, maar meer de structuur die aangepast moet worden. Apache OpenOffice verschaft voor dit doel codes voor beheer. Deze worden ingevoegd in de tekst en beïnvloeden diens structuur. De codes voor beheer worden gedefinieerd in de groep van constanten com.sun.star.text.ControlCharacter. De volgende codes voor beheer zijn beschikbaar in Apache OpenOffice:

PARAGRAPH_BREAK
alineaeinde.
LINE_BREAK
regeleinde binnen een alinea.
SOFT_HYPHEN
mogelijk punt voor afbreken van woord.
HARD_HYPHEN
verplicht punt voor afbreken van woord.
HARD_SPACE
beveiligde spatie die niet wordt uitgestrekt of gecomprimeerd in uitgevulde tekst.

U heeft niet alleen de cursor, maar ook de geassocieerde tekst-objecten nodig om codes voor beheer in te kunnen voegen. Het volgende voorbeeld voegt een alinea in na het 20e teken van een tekst:

Dim Doc As Object   
Dim Cursor As Object
Dim Doorgaan As Boolean
 
Doc = ThisComponent
Cursor = Doc.Text.createTextCursor
Cursor.goRight(20, False)
Doc.Text.insertControlCharacter(Cursor, _
    com.sun.star.text.ControlCharacter.PARAGRAPH_BREAK, False)

De parameter False in de aanroep van de methode insertControlCharacter zorgt er voor dat het huidige door de TextCursor geaccentueerde gebied blijft behouden na het invoegen. Als hier de parameter True wordt gebruikt, dan vervangt insertControlCharacter de huidige tekst.

Zoeken naar gedeelten van de tekst

In veel gevallen is het zo dat een tekst moet worden doorzocht naar een bepaalde term om op dat bepaalde punt te worden bewerkt. Alle documenten van Apache OpenOfficeverschaffen een speciale interface voor dat doel en deze interface functioneert altijd overeenkomstig hetzelfde principe: Voordat een zoekactie, die gewoonlijk wordt aangeduid als SearchDescriptor kan plaatsvinden, moet die eerst worden gemaakt. Deze definieert waarnaar Apache OpenOffice moet zoeken in een document. Een SearchDescriptor is een object dat de service com.sun.star.util.SearchDescriptor ondersteund en kan worden gemaakt door middel van de methode createSearchDescriptor van een document:

Dim SearchDesc As Object
SearchDesc = Doc.createSearchDescriptor

Als de SearchDescriptor eenmaal is gemaakt, ontvangt het de tekst die moet worden doorzocht:

SearchDesc.searchString="elke tekst"

Met betrekking tot zijn functie kan de SearchDescriptor het best worden vergeleken met het dialoogvenster Zoeken uit Apache OpenOffice. Op eenzelfde manier als in het venster Zoeken, kunnen de instellingen voor de zoekactie worden ingesteld in het object SearchDescriptor.

De eigenschappen worden verschaft door de service com.sun.star.util.SearchDescriptor:

SearchBackwards (Boolean)
zoekt achterwaarts dor de tekst in plaats van naar voren.
SearchCaseSensitive (Boolean)
houdt rekening met hoofd- en kleine letters tijdens het zoeken.
SearchRegularExpression (Boolean)
behandelt de zoekuitdrukking als een reguliere uitdrukking.
SearchStyles (Boolean)
zoekt door de tekst naar het gespecificeerde alineaopmaakprofiel.
SearchWords (Boolean)
zoekt alleen naar hele woorden.

De functie SearchSimilarity (of “vage overeenkomst”) van Apache OpenOffice is ook beschikbaar in Apache OpenOffice BASIC. Met deze functie, zoekt Apache OpenOffice naar een uitdrukking die overeenkomt, maar niet geheel gelijk is aan de zoek-uitdrukking. Het aantal toegevoegde, weggelaten of aangepaste tekens voor deze uitdrukking kan individueel worden gedefinieerd. Hier zijn de geassocieerde eigenschappen van de service com.sun.star.util.SearchDescriptor:

SearchSimilarity (Boolean)
voert een zoekactie naar overeenkomsten uit.
SearchSimilarityAdd (Short)
aantal tekens dat mag worden toegevoegd voor een zoekactie op overeenkomsten.
SearchSimilarityExchange (Short)
aantal tekens dat mag worden vervangen als deel van een zoekactie op overeenkomsten.
SearchSimilarityRemove (Short)
aantal tekens dat mag worden verwijderd als deel van een zoekactie op overeenkomsten.
SearchSimilarityRelax (Boolean)
houdt gelijktijdig rekening met alle afwijkende regels voor de zoekuitdrukking.

Als de SearchDescriptor eenmaal is voorbereid zoals gewenst, kan hij worden toegepast op het tekstdocument. De documenten van Apache OpenOffice verschaffen de methoden findFirst en findNext voor dit doel:

Gevonden = Doc.findFirst (SearchDesc)
 
Do Until IsNull(Gevonden)
  ' Bewerk de resultaten van de zoekactie...
  Gevonden = Doc.findNext(Gevonden.End, SearchDesc)
Loop

Het voorbeeld vindt alle overeenkomsten in een lus en geeft een object TextRange weer, dat refereert aan de gevonden passage in de tekst.

Voorbeeld: zoekactie naar overeenkomsten

Dit voorbeeld toont hoe een tekst kan worden doorzocht naar het woord “verandering” en het resultaat opgemaakt als type Vet. Een zoekactie naar overeenkomsten wordt gebruikt zodat niet alleen het woord “verandering”, maar ook de meervoudsvorm "veranderingen" en vervoegingen zoals "verandering's" worden gevonden. De gevonden uitdrukkingen verschillen tot maximaal twee letters van de zoek-uitdrukking:

Dim SearchDesc As Object
Dim Doc As Object
 
Doc = ThisComponent
SearchDesc = Doc.createSearchDescriptor
SearchDesc.SearchString="verandering"
SearchDesc.SearchSimilarity = True
SearchDesc.SearchSimilarityAdd = 2
SearchDesc.SearchSimilarityExchange = 2
SearchDesc.SearchSimilarityRemove = 2
SearchDesc.SearchSimilarityRelax = False
Found = Doc.findFirst (SearchDesc)
 
Do Until IsNull(Gevonden)
  Gevonden.CharWeight = com.sun.star.awt.FontWeight.BOLD
  Gevonden = Doc.findNext(Gevonden.End, SearchDesc)
Loop
Documentation note.png VBA : The basic idea of search and replace in Apache OpenOffice is comparable to that used in VBA. Both interfaces provide you with an object, through which the properties for searching and replacing can be defined. This object is then applied to the required text area in order to perform the action. Whereas the responsible auxiliary object in VBA can be reached through the Find property of the Range object, in Apache OpenOffice Basic it is created by the createSearchDescriptor or createReplaceDescriptor call of the document object. Even the search properties and methods available differ.


As in the old API from Apache OpenOffice, searching and replacing text in the new API is also performed using the document object. Whereas previously there was an object called SearchSettings especially for defining the search options, in the new object searches are now performed using a SearchDescriptor or ReplaceDescriptor object for automatically replacing text. These objects cover not only the options, but also the current search text and, if necessary, the associated text replacement. The descriptor objects are created using the document object, completed in accordance with the relevant requests, and then transferred back to the document object as parameters for the search methods.

Replacing Text Portions

Just as with the search function, the replacement function from Apache OpenOffice is also available in Apache OpenOffice Basic. The two functions are handled identically. A special object which records the parameters for the process is also first needed for a replacement process. It is called a ReplaceDescriptor and supports the com.sun.star.util.ReplaceDescriptor service. All the properties of the SearchDescriptor described in the previous paragraph are also supported by ReplaceDescriptor. For example, during a replacement process, case sensitivity can also be activated and deactivated, and similarity searches can be performed.

The following example demonstrates the use of ReplaceDescriptors for a search within a Apache OpenOffice document.

Dim I As Long
Dim Doc As Object
Dim Replace As Object
Dim BritishWords(5) As String
Dim USWords(5) As String
 
BritishWords() = Array("colour", "neighbour", "centre", "behaviour", _
   "metre", "through")
USWords() = Array("color", "neighbor", "center", "behavior", _
   "meter", "thru")
 
Doc = ThisComponent
Replace = Doc.createReplaceDescriptor
 
For I = 0 To 5
  Replace.SearchString = BritishWords(I)
  Replace.ReplaceString = USWords(I)
  Doc.replaceAll(Replace)
Next I

The expressions for searching and replacing are set using the SearchString and ReplaceString properties of the ReplaceDescriptors. The actual replacement process is finally implemented using the replaceAll method of the document object, which replaces all occurrences of the search expression.

Example: searching and replacing text with regular expressions

The replacement function of Apache OpenOffice is particularly effective when used in conjunction with regular expressions. These provide the option of defining a variable search expression with place holders and special characters rather than a fixed value.

The regular expressions supported by Apache OpenOffice are described in detail in the online help section for Apache OpenOffice. Here are a few examples:

  • A period within a search expression stands for any character. The search expression sh.rt therefore can stand for both for shirt and for short.
  • The character ^ marks the start of a paragraph. All occurrences of the name Peter that are at the start of a paragraph can therefore be found using the search expression ^Peter.
  • The character $ marks a paragraph end. All occurrences of the name Peter that are at the end of a paragraph can therefore be found using the search expression Peter$.
  • A * indicates that the preceding character may be repeated any number of times. It can be combined with the period as a place holder for any character. The temper.*e expression, for example, can stand for the expressions temperance and temperature.

The following example shows how all empty lines in a text document can be removed with the help of the regular expression ^$:

Dim Doc As Object
Dim Replace As Object
Dim I As Long
 
Doc = ThisComponent
Replace = Doc.createReplaceDescriptor
Replace.SearchRegularExpression = True
Replace.SearchString = "^$"
Replace.ReplaceString = ""
 
Doc.replaceAll(Replace)


Content on this page is licensed under the Public Documentation License (PDL).
Personal tools