Strings (Tekenreeksen) (Apache OpenOffice BASIC runtime-bibliotheek)

From Apache OpenOffice Wiki
Jump to: navigation, search
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 die 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 worden 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 geen enkele waarde terug!

Opmaken van tekenreeksen

De functie Format maakt getallen op als een tekenreeks. De functie verwacht dat een uitdrukking Format is gespecificeerd om dat te doen, die dan als sjabloon wordt gebruikt voor de opmaak van de getallen. Elke tijdelijke plaatsaanduiding binnen de sjabloon zorgt er voor dat dit item wordt opgemaakt overeenkomstig de waarde voor uitvoer. De vijf meest belangrijke tijdelijke plaatsaanduidingen binnen een sjabloon zijn de tekens nul (0), hekje (#), punt (.), komma (,) en Dollar ($).

Het teken 0 binnen de sjabloon zorgt er voor dat een getal altijd op het overeenkomstige punt wordt geplaatst. Indien er geen getal wordt verschaft, wordt in plaats daarvan 0 weergegeven.

Een . staat voor het symbool voor de decimale punt gedefinieerd door het besturingssysteem in de land-specifieke instellingen.

Het voorbeeld hieronder geeft weer hoe de tekens 0 en . de cijfers achter de decimale punt definiëren in een uitdrukking:

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

Op dezelfde manier kunnen vóór een getal voorloopnullen worden toegevoegd om de gewenste lengte te bereiken:

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

Een , vertegenwoordigt het teken dat het besturingssysteem gebruikt als scheidingsteken voor duizendtallen en de # staat voor een cijfer of plaats die alleen wordt weergegeven als dat is vereist door de tekenreeks van de invoer.

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

In plaats van de plaatsaanduiding $ geeft de functie Format het relevante valutasymbool weer zoals dat is gedefinieerd door het systeem (dit voorbeeld gaat er van uit dat er een Europese locale is gedefinieerd):

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

De instructies voor opmaak die worden gebruikt in VBA voor het opmaken van details voor datum en tijd kunnen ook worden gebruikt:

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


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