Delen via


Basisbeginselen van tekenreeksen in Visual Basic

Het String gegevenstype vertegenwoordigt een reeks tekens (elk die op zijn beurt een exemplaar van het Char gegevenstype vertegenwoordigt). In dit onderwerp worden de basisconcepten van tekenreeksen in Visual Basic geïntroduceerd.

Tekenreeksvariabelen

Aan een exemplaar van een tekenreeks kan een letterlijke waarde worden toegewezen die een reeks tekens vertegenwoordigt. Voorbeeld:

Dim MyString As String
MyString = "This is an example of the String data type"

Een String variabele kan ook elke expressie accepteren die resulteert in een tekenreeks. Voorbeelden worden hieronder weergegeven:

    Dim OneString As String
    Dim TwoString As String
    OneString = "one, two, three, four, five"

    ' Evaluates to "two".
    TwoString = OneString.Substring(5, 3)
    OneString = "1"

    ' Evaluates to "11".
    TwoString = OneString & "1"

Letterlijke gegevens die aan een String variabele zijn toegewezen, moeten tussen aanhalingstekens ("") worden geplaatst. Dit betekent dat een aanhalingsteken binnen een tekenreeks niet kan worden vertegenwoordigd door een aanhalingsteken. De volgende code veroorzaakt bijvoorbeeld een compilerfout:

Dim myString As String

' This line would cause an error.
' myString = "He said, "Look at this example!""

Deze code veroorzaakt een fout omdat de compiler de tekenreeks na het tweede aanhalingsteken beëindigt en de rest van de tekenreeks wordt geïnterpreteerd als code. Om dit probleem op te lossen, interpreteert Visual Basic twee aanhalingstekens in een letterlijke tekenreeks als één aanhalingsteken in de tekenreeks. In het volgende voorbeeld ziet u de juiste manier om een aanhalingsteken in een tekenreeks op te nemen:

' The value of myString is: He said, "Look at this example!"
myString = "He said, ""Look at this example!"""

In het voorgaande voorbeeld worden de twee aanhalingstekens voorafgaand aan het woord Look één aanhalingsteken in de tekenreeks. De drie aanhalingstekens aan het einde van de regel staan voor één aanhalingsteken in de tekenreeks en het teken voor het beëindigen van de tekenreeks.

Letterlijke tekenreeksen kunnen meerdere regels bevatten:

Dim x = "hello  
world"  

De resulterende tekenreeks bevat newlinereeksen die u hebt gebruikt in de letterlijke tekenreeks (vbcr, vbcrlf, enzovoort). U hoeft de oude tijdelijke oplossing niet meer te gebruiken:

Dim x = <xml><![CDATA[Hello  
World]]></xml>.Value  

Tekens in tekenreeksen

Een tekenreeks kan worden beschouwd als een reeks Char waarden en het String type heeft ingebouwde functies waarmee u veel bewerkingen kunt uitvoeren op een tekenreeks die lijkt op de bewerkingen die zijn toegestaan door matrices. Net als alle matrices in .NET Framework zijn dit op nul gebaseerde matrices. U kunt verwijzen naar een specifiek teken in een tekenreeks via de Chars eigenschap, die een manier biedt om toegang te krijgen tot een teken op basis van de positie waarin het in de tekenreeks wordt weergegeven. Voorbeeld:

    Dim myString As String = "ABCDE"
    Dim myChar As Char

    ' The value of myChar is "D".
    myChar = myString.Chars(3)

In het bovenstaande voorbeeld retourneert de Chars eigenschap van de tekenreeks het vierde teken in de tekenreeks. Dit is D, en wijst deze toe aan myChar. U kunt ook de lengte van een bepaalde tekenreeks ophalen via de Length eigenschap. Als u meerdere bewerkingen van het matrixtype op een tekenreeks wilt uitvoeren, kunt u deze converteren naar een matrix met exemplaren met behulp van Char de ToCharArray functie van de tekenreeks. Voorbeeld:

Dim myString As String = "abcdefghijklmnop"
Dim myArray As Char() = myString.ToCharArray

De variabele myArray bevat nu een matrix met Char waarden, die elk een teken uit myStringvertegenwoordigen.

De onveranderbaarheid van tekenreeksen

Een tekenreeks is onveranderbaar, wat betekent dat de waarde ervan niet kan worden gewijzigd zodra deze is gemaakt. Dit voorkomt echter niet dat u meer dan één waarde toewijst aan een tekenreeksvariabele. Kijk een naar het volgende voorbeeld:

Dim myString As String = "This string is immutable"
myString = "Or is it?"

Hier wordt een tekenreeksvariabele gemaakt, op basis van een waarde en wordt de waarde ervan gewijzigd.

Meer specifiek wordt in de eerste regel een exemplaar van het type String gemaakt en krijgt u de waarde This string is immutable. In de tweede regel van het voorbeeld wordt een nieuw exemplaar gemaakt en gegeven de waarde Or is it?. De tekenreeksvariabele negeert de verwijzing naar het eerste exemplaar en slaat een verwijzing op naar het nieuwe exemplaar.

In tegenstelling tot andere intrinsieke gegevenstypen is String dit een referentietype. Wanneer een variabele van het verwijzingstype wordt doorgegeven als argument aan een functie of subroutine, wordt een verwijzing naar het geheugenadres waar de gegevens worden opgeslagen, doorgegeven in plaats van de werkelijke waarde van de tekenreeks. In het vorige voorbeeld blijft de naam van de variabele hetzelfde, maar verwijst deze naar een nieuw en ander exemplaar van de String klasse, dat de nieuwe waarde bevat.

Zie ook