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 myString
vertegenwoordigen.
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.