Grundlagen zu Zeichenfolgen in Visual Basic

Der String-Datentyp stellt eine Reihe von Zeichen dar (wobei jedes Zeichen wiederum eine Instanz des Char-Datentyps darstellt). In diesem Thema werden die grundlegenden Konzepte von Zeichenfolgen in Visual Basic erläutert.

Zeichenfolgenvariablen

Einer Instanz einer Zeichenfolge kann ein Literalwert zugewiesen werden, der eine Reihe von Zeichen darstellt. Beispiel:

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

Eine String-Variable kann auch einen beliebigen Ausdruck annehmen, der eine Zeichenfolge ergibt. Beispiele werden unten gezeigt:

    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"

Jedes Literal, das einer String-Variable zugewiesen ist, muss in Anführungszeichen eingeschlossen werden („“). Dies bedeutet, dass ein Anführungszeichen in einer Zeichenfolge nicht durch ein Anführungszeichen dargestellt werden kann. Beispielsweise verursacht der folgende Code einen Compilerfehler:

Dim myString As String

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

Dieser Code verursacht einen Fehler, da der Compiler die Zeichenfolge nach dem zweiten Anführungszeichen beendet, und der Rest der Zeichenfolge wird als Code interpretiert. Zur Lösung dieses Problems interpretiert Visual Basic zwei Anführungszeichen in einem Zeichenfolgenliteral als ein Anführungszeichen in der Zeichenfolge. Das folgende Beispiel zeigt die korrekte Methode zum Einschließen eines Anführungszeichens in eine Zeichenfolge:

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

Im vorherigen Beispiel werden die beiden Anführungszeichen, die vor dem Wort Look vorhanden sind, zu einem Anführungszeichen in der Zeichenfolge. Die drei Anführungszeichen am Ende der Zeile stellen ein Anführungszeichen in der Zeichenfolge und das Abschlusszeichen der Zeichenfolge dar.

Zeichenfolgenliterale können mehrere Zeilen enthalten:

Dim x = "hello  
world"  

Die resultierende Zeichenfolge enthält Zeilenumbruchsequenzen, die Sie in Ihrem Zeichenfolgenliteral (vbcr, vbcrlf usw.) verwendet haben. Sie müssen nicht mehr die bisherige Problemumgehung verwenden:

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

Zeichen in Zeichenfolgen

Eine Zeichenfolge kann als eine Reihe von Char-Werten betrachtet werden, und der String-Typ verfügt über integrierte Funktionen, mit denen Sie zahlreiche Bearbeitungen an einer Zeichenfolge vornehmen können, die den durch Arrays zulässigen Bearbeitungen ähneln. Wie bei allen Arrays in .NET Framework, handelt es sich dabei um nullbasierte Arrays. Sie möchten möglicherweise auf ein bestimmtes Zeichen in einer Zeichenfolge durch die Chars-Eigenschaft verweisen, die eine Möglichkeit bietet, auf ein Zeichen durch die Position zuzugreifen, in der es in der Zeichenfolge auftritt. Beispiel:

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

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

Im obigen Beispiel gibt die Chars-Eigenschaft der Zeichenfolge das vierte Zeichen in der Zeichenfolge zurück, wobei es sich um D handelt, und weist dieses myChar zu. Sie können auch die Länge einer bestimmten Zeichenfolge durch die Length-Eigenschaft abrufen. Wenn Sie mehrere Bearbeitungen hinsichtlich des Arraytyps an einer Zeichenfolge durchführen müssen, können Sie sie in ein Array von Char-Instanzen mit der ToCharArray-Funktion der Zeichenfolge konvertieren. Beispiel:

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

Die Variable myArray enthält jetzt ein Array von Char-Werten, die jeweils ein Zeichen aus myString darstellen.

Die Unveränderlichkeit von Zeichenfolgen

Eine Zeichenfolge ist unveränderlich. Das bedeutet, dass der entsprechende Wert nicht geändert werden kann, nachdem er erstellt wurde. Sie können einer Zeichenfolgenvariablen trotzdem mehr als einen Wert zuweisen. Betrachten Sie das folgende Beispiel:

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

Hier wird eine Zeichenfolgenvariable erstellt, ein Wert zugewiesen, und dann wird der Wert geändert.

Genauer gesagt wird in der ersten Zeile eine Instanz des Typs String erstellt und der Wert This string is immutable zugewiesen. In der zweiten Zeile des Beispiels wird eine neue Instanz erstellt und der Wert Or is it? zugewiesen. Die Zeichenfolgenvariable verwirft den Verweis auf die erste Instanz und speichert einen Verweis auf die neue Instanz.

Im Gegensatz zu anderen systeminternen Datentypen ist String ein Verweistyp. Wenn eine Variable des Verweistyps als Argument an eine Funktion oder Unterroutine übergeben wird, wird ein Verweis auf die Speicheradresse, wo die Daten gespeichert werden, anstelle des tatsächlichen Werts der Zeichenfolge übergeben. Damit bleibt der Name der Variable im vorherigen Beispiel gleich, aber es wird auf eine neue und andere Instanz der String-Klasse verwiesen, die den neuen Wert enthält.

Siehe auch