Difference between revisions of "NL/Documentation/BASIC Guide/Strings (Runtime Library)"

From Apache OpenOffice Wiki
Jump to: navigation, search
(Accessing Parts of a String)
(Search and Replace)
Line 58: Line 58:
 
</source>
 
</source>
  
== Search and Replace ==
+
== Zoeken en vervangen ==
  
{{OOo}} Basic provides the <tt>InStr</tt> function for searching for a partial string within another string:
+
{{OOo}} BASIC verschaft de functie <tt>InStr</tt> voor het zoeken naar een gedeeltelijke tekenreeks binnen een andere tekenreeks:
  
 
<source lang="oobas">
 
<source lang="oobas">
ResultString = InStr (MyString, SearchString)
+
ResultString = InStr (MyString, ZoekString)
 
</source>
 
</source>
  
The <tt>SearchString</tt> parameter specifies the string to be searched for within <tt>MyString</tt>. The function returns a number that contains the position at which the <tt>SearchString</tt> first appears within <tt>MyString</tt>; a return value of zero indicates no match. If you want to find other matches for the string, the function also provides the opportunity to specify an optional start position from which {{OOo}} Basic begins the search. In this case, the syntax of the function is:
+
De parameter <tt>ZoekString</tt> specificeert de string waarnaar moet wordne gezocht binnen <tt>MyString</tt>. De functie geeft een getal terug dat de positie bevat waarop <tt>ZoekString</tt> voor de eerste keer voorkomt in <tt>MyString</tt>; een teruggegeven waarde van nul geeft aan dat er geen overeenkomst is. Indien u andere overeenkomsten voor de tekenreeks wilt zoeken geeft de functie ook de mogelijkheid om een optionele startpositie op te geven vanaf waar {{OOo}} BASIC de zoekactie begint. In dat geval is de syntaxis van de functie:
  
 
<source lang="oobas">
 
<source lang="oobas">
ResultString = InStr(StartPosition, MyString, SearchString)
+
ResultString = InStr(BeginPositie, MyString, ZoekString)
 
</source>
 
</source>
  
In the previous examples, <tt>InStr</tt> ignores uppercase and lowercase characters. To change the search so that <tt>InStr</tt> is case sensitive, add the parameter <tt>0</tt>, as shown in the following example:
+
In de vorige voorbeelden negeert <tt>InStr</tt> hoofd- en kleine letters. Voeg de parameter <tt>0</tt> toe om de zoekopdracht zo te wijzigen dat <tt>InStr</tt> rekening houdt met hoofd- en kleine letters, zoals weergegeven in het volgende voorbeeld:
  
 
<source lang="oobas">
 
<source lang="oobas">
ResultString = InStr(MyString, SearchString, 0)
+
ResultString = InStr(MyString, ZoekString, 0)
 
</source>
 
</source>
  
Using the previous functions for editing strings, programmers can search for and replace one string in another string:  
+
Met behulp van de vorige functies voor het bewerken van tekenreeksen kunnen programmeurs zoeken naar een tekenreeks en de ene tekenreeks in een andere tekenreeks vervangen:  
  
 
<source lang="oobas">
 
<source lang="oobas">
Function Replace(Source As String, Search As String, NewPart As String)
+
Function Replace(Bron As String, Zoeken As String, NieuwDeel As String)
   Dim Result As String
+
   Dim Resultaat As String
 
   Dim StartPos As Long
 
   Dim StartPos As Long
   Dim CurrentPos As Long
+
   Dim HuidigePos As Long
  
   Result = ""
+
   Resultaat = ""
 
   StartPos = 1
 
   StartPos = 1
   CurrentPos = 1
+
   HuidigePos = 1
  
   If Search = "" Then
+
   If Zoeken = "" Then
     Result = Source
+
     Resultaat = Bron
 
   Else  
 
   Else  
     Do While CurrentPos <> 0
+
     Do While HuidigePos <> 0
       CurrentPos = InStr(StartPos, Source, Search)
+
       HuidigePos = InStr(StartPos, Bron, Zoeken)
       If CurrentPos <> 0 Then
+
       If HuidigePos <> 0 Then
         Result = Result + Mid(Source, StartPos, _
+
         Resultaat = Resultaat + Mid(Bron, StartPos, _
         CurrentPos - StartPos)
+
         HuidigePos - StartPos)
         Result = Result + NewPart
+
         Resultaat = Resultaat + NieuwDeel
         StartPos = CurrentPos + Len(Search)
+
         StartPos = HuidigePos + Len(Zoeken)
 
       Else
 
       Else
         Result = Result + Mid(Source, StartPos, Len(Source))
+
         Resultaat = Resultaat + Mid(Bron, StartPos, Len(Bron))
       End If                ' Position <> 0
+
       End If                ' Positie <> 0
 
     Loop  
 
     Loop  
 
   End If  
 
   End If  
  
   Replace = Result
+
   Replace = Resultaat
 
End Function
 
End Function
 
</source>
 
</source>
  
The function searches through the transferred <tt>Search</tt> string in a loop by means of <tt>InStr</tt> in the original term <tt>Source</tt>. If it finds the search term, it takes the part before the expression and writes it to the <tt>Result</tt> return buffer. It adds the <tt>NewPart</tt> section at the point of the search term <tt>Search</tt>. If no more matches are found for the search term, the function establishes the part of the string still remaining and adds this to the return buffer. It returns the string produced in this way as the result of the replacement process.
+
De functie zoekt door de getransfereerde tekenreeks <tt>Zoeken</tt> in een loop door middel van <tt>InStr</tt> in de originele term <tt>Bron</tt>. Indien het de zoekterm vindt neemt het het gedeelte vóór de uitdrukking en schrijft het naar de teruggave-buffer <tt>Resultaat</tt>. Het voegt het gedeelte <tt>NieuwDeel</tt> toe op het punt van de zoekterm <tt>Zoeken</tt>. Indien er geen overeenkomsten meer wordne gevonden voor de zoekterm stelt de functie het nog resterende gedeelte van de tekenreeks vast en voegt die toe aan de teruggave-buffer. Het geeft de op deze manier geproduceerde tekenreeks terug als het resultaat van het proces van vervangen.
  
Since replacing parts of character sequences is one of the most frequently used functions, the <tt>Mid</tt> function in {{OOo}} Basic has been extended so that this task is performed automatically. The following example replaces three characters with the string <tt>is</tt> from the sixth position of the <tt>MyString</tt> string.
+
Omdat het vervangen van gedeelten van tekenreeksen één van de meest frequent gebruikte functies is, is de functie <tt>Mid</tt> in {{OOo}} BASIC uitgebreid zodat deze taak automatisch wordt uitgevoerd. Het volgende voorbeeld vervangt drie tekens door de tekenreeks <tt>is</tt> vanaf de vijfde positie van de tekenreeks <tt>MyString</tt>.
  
 
<source lang="oobas">
 
<source lang="oobas">
 
Dim MyString As String
 
Dim MyString As String
 
   
 
   
MyString = "This was my text"
+
MyString = "Dit was mijn tekst"
Mid(MyString, 6, 3, "is")
+
Mid(MyString, 5, 3, "is")
 
</source>
 
</source>
  
Or this much simpler function can be used. First it splits "Source" dividing it at all "Search", and joins the parts back with "NewPart". So Replace("This is a test", " ", "_") yields "This_is_a_test" :D
+
Of deze veel eenvoudiger functie kan worden gebruikt. Eerst splitst het "Bron" door het op te delen bij elke "Zoeken" en voegt dan de delen weer samen met "NieuwDeel". Dus Replace("Dit is een test", " ", "_") wordt dan "Dit_is_een_test" :D
  
 
<source lang="oobas">
 
<source lang="oobas">
Function Replace(Source As String, Search As String, NewPart As String)
+
Function Replace(Bron As String, Zoeken As String, NieuwDeel As String)
 
   Dim Result As String   
 
   Dim Result As String   
   Result = join(split(Source, Search), NewPart)
+
   Result = join(split(Bron, Zoeken), NieuwDeel)
 
   Replace = Result
 
   Replace = Result
 
End Function
 
End Function
Line 132: Line 132:
  
  
{{Documentation/Caution|When it is used with 4 arguments, to replace a sub-string in a string, <tt>Mid</tt> is an '''instruction''', not a function : it does not return any value !}}
+
{{Documentation/Caution|Als dit wordt gebruikt met 4 argumenten, om een sub-tekenreeks te vervangen binnen een tekenreeks, is <tt>Mid</tt> een '''instructie''', geen functie : het geeft gene enkele waarde terug !}}
  
 
== Formatting Strings ==
 
== Formatting Strings ==

Revision as of 18:14, 19 January 2013

Book.png


Werken met verzamelingen van tekens

Bij het beheren van tekenreeksen gebruikt Apache OpenOffice BASIC de verzameling tekens van Unicode. De functies Asc en Chr maken het mogelijk de waarde in Unicode, die behoort tot een teken, vast te stellen en/of het overeenkomende teken te vinden voor een waarde in Unicode. De volgende uitdrukkingen wijzen de verschillende waarde in Unicode toe aan de variabele in de code:

Code = Asc("A")         ' Latijnse letter A (Unicode-value 65)
Code = Asc("€")         ' Euroteken (Unicode-value 8364)
Code = Asc("Л")         ' Cyrillische letter Л (Unicode-value 1083)

In tegenstelling daaraan zorgt de uitdrukking

MijnString = Chr(13)

er voor dat de tekenreeks MijnString wordt geïnitialiseerd met de waarde van het getal 13, wat staat voor een hard regeleinde.

De opdracht Chr wordt vaak in talen voor BASIC gebruikt om besturingstekens in een tekenreeks in te voegen. De toewijzing

MijnString = Chr(9) + "Dit is een test" + Chr(13)

zorgt er daarom voor dat de tekst wordt voorafgegaan door een teken Tab (Unicode-waarde 9) en dat een hard regeleinde (Unicode-waarde 13) wordt toegevoegd na de tekst.

Toegang tot delen van een string

Apache OpenOffice BASIC verschaft drie functies doe gedeeltelijke strings teruggeven, plus een functie Lengte:

Left(MijnString, Lengte)
geeft de eerste Lengte tekens terug van MijnString.
Right(MijnString, Lengte)
geeft de laatste Lengte tekens terug van MijnString.
Mid(MijnString, Begin, Lengte)
gefet de eerste Lengte tekens terug van MijnString vanaf de positie Begin.
Len(MijnString)
geeft het aantal tekens terug in MijnString.

Hier zijn een aantal voorbeeld aanroepen voor de genoemde functies:

Dim MijnString As String
Dim MijnResultaat As String
Dim MijnLen As Integer
 
MijnString = "Dit is een kleine test"
MijnResultaat = Left(MijnString,3)      ' Geeft de tekenreeks "Dit "
MijnResultaat = Right(MijnString, 5)    ' Geeft de tekenreeks " test"
MijnResultaat = Mid(MijnString, 7, 7)   ' Geeft de tekenreeks " een kl"
MijnLen = Len(MijnString)               ' Geeft de waarde 22

Zoeken en vervangen

Apache OpenOffice BASIC verschaft de functie InStr voor het zoeken naar een gedeeltelijke tekenreeks binnen een andere tekenreeks:

ResultString = InStr (MyString, ZoekString)

De parameter ZoekString specificeert de string waarnaar moet wordne gezocht binnen MyString. De functie geeft een getal terug dat de positie bevat waarop ZoekString voor de eerste keer voorkomt in MyString; een teruggegeven waarde van nul geeft aan dat er geen overeenkomst is. Indien u andere overeenkomsten voor de tekenreeks wilt zoeken geeft de functie ook de mogelijkheid om een optionele startpositie op te geven vanaf waar Apache OpenOffice BASIC de zoekactie begint. In dat geval is de syntaxis van de functie:

ResultString = InStr(BeginPositie, MyString, ZoekString)

In de vorige voorbeelden negeert InStr hoofd- en kleine letters. Voeg de parameter 0 toe om de zoekopdracht zo te wijzigen dat InStr rekening houdt met hoofd- en kleine letters, zoals weergegeven in het volgende voorbeeld:

ResultString = InStr(MyString, ZoekString, 0)

Met behulp van de vorige functies voor het bewerken van tekenreeksen kunnen programmeurs zoeken naar een tekenreeks en de ene tekenreeks in een andere tekenreeks vervangen:

Function Replace(Bron As String, Zoeken As String, NieuwDeel As String)
  Dim Resultaat As String
  Dim StartPos As Long
  Dim HuidigePos As Long
 
  Resultaat = ""
  StartPos = 1
  HuidigePos = 1
 
  If Zoeken = "" Then
    Resultaat = Bron
  Else 
    Do While HuidigePos <> 0
      HuidigePos = InStr(StartPos, Bron, Zoeken)
      If HuidigePos <> 0 Then
        Resultaat = Resultaat + Mid(Bron, StartPos, _
        HuidigePos - StartPos)
        Resultaat = Resultaat + NieuwDeel
        StartPos = HuidigePos + Len(Zoeken)
      Else
        Resultaat = Resultaat + Mid(Bron, StartPos, Len(Bron))
      End If                ' Positie <> 0
    Loop 
  End If 
 
  Replace = Resultaat
End Function

De functie zoekt door de getransfereerde tekenreeks Zoeken in een loop door middel van InStr in de originele term Bron. Indien het de zoekterm vindt neemt het het gedeelte vóór de uitdrukking en schrijft het naar de teruggave-buffer Resultaat. Het voegt het gedeelte NieuwDeel toe op het punt van de zoekterm Zoeken. Indien er geen overeenkomsten meer wordne gevonden voor de zoekterm stelt de functie het nog resterende gedeelte van de tekenreeks vast en voegt die toe aan de teruggave-buffer. Het geeft de op deze manier geproduceerde tekenreeks terug als het resultaat van het proces van vervangen.

Omdat het vervangen van gedeelten van tekenreeksen één van de meest frequent gebruikte functies is, is de functie Mid in Apache OpenOffice BASIC uitgebreid zodat deze taak automatisch wordt uitgevoerd. Het volgende voorbeeld vervangt drie tekens door de tekenreeks is vanaf de vijfde positie van de tekenreeks MyString.

Dim MyString As String
 
MyString = "Dit was mijn tekst"
Mid(MyString, 5, 3, "is")

Of deze veel eenvoudiger functie kan worden gebruikt. Eerst splitst het "Bron" door het op te delen bij elke "Zoeken" en voegt dan de delen weer samen met "NieuwDeel". Dus Replace("Dit is een test", " ", "_") wordt dan "Dit_is_een_test" :D

Function Replace(Bron As String, Zoeken As String, NieuwDeel As String)
  Dim Result As String  
  Result = join(split(Bron, Zoeken), NieuwDeel)
  Replace = Result
End Function


Documentation caution.png Als dit wordt gebruikt met 4 argumenten, om een sub-tekenreeks te vervangen binnen een tekenreeks, is Mid een instructie, geen functie : het geeft gene enkele waarde terug !

Formatting Strings

The Format function formats numbers as a string. To do this, the function expects a Format expression to be specified, which is then used as the template for formatting the numbers. Each place holder within the template ensures that this item is formatted correspondingly in the output value. The five most important place holders within a template are the zero (0), pound sign (#), period (.), comma (,) and dollar sign ($) characters.

The 0 character within the template ensures that a number is always placed at the corresponding point. If a number is not provided, 0 is displayed in its place.

A . stands for the decimal point symbol defined by the operating system in the country-specific settings.

The example below shows how the 0 and . characters can define the digits after the decimal point in an expression:

MyFormat = "0.00"
MyString = Format(-1579.8, MyFormat)     ' Provides "-1579,80"
MyString = Format(1579.8, MyFormat)      ' Provides "1579,80"
MyString = Format(0.4, MyFormat)         ' Provides "0,40"
MyString = Format(0.434, MyFormat)       ' Provides "0,43"

In the same way, zeros can be added in front of a number to achieve the desired length:

MyFormat = "0000.00"
MyString = Format(-1579.8, MyFormat)     ' Provides "-1579,80"
MyString = Format(1579.8, MyFormat)      ' Provides "1579,80"
MyString = Format(0.4, MyFormat)         ' Provides "0000,40"
MyString = Format(0.434, MyFormat)       ' Provides "0000,43"

A , represents the character that the operating system uses for a thousands separator, and the # stands for a digit or place that is only displayed if it is required by the input string.

MyFormat = "#,##0.00"
MyString = Format(-1579.8, MyFormat)     ' Provides "-1.579,80"
MyString = Format(1579.8, MyFormat)      ' Provides "1.579,80"
MyString = Format(0.4, MyFormat)         ' Provides "0,40"
MyString = Format(0.434, MyFormat)       ' Provides "0,43"

In place of the $ place holder, the Format function displays the relevant currency symbol defined by the system (this example assumes a European locale has been defined):

MyFormat = "#,##0.00 $"   
MyString = Format(-1579.8, MyFormat)     ' Provides "-1.579,80 €" 
MyString = Format(1579.8, MyFormat)      ' Provides "1.579,80 €" 
MyString = Format(0.4, MyFormat)         ' Provides "0,40 €" 
MyString = Format(0.434, MyFormat)       ' Provides "0,43 €"

The format instructions used in VBA for formatting date and time details can also be used:

sub main
    dim myDate as date
    myDate = "01/06/98"
    TestStr = Format(myDate, "mm-dd-yyyy") ' 01-06-1998
    MsgBox TestStr
end sub


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