Sdílet prostřednictvím


Základní informace o řetězcích v jazyce Visual Basic

Datový String typ představuje řadu znaků (každý představuje instanci datového Char typu). Toto téma představuje základní koncepty řetězců v jazyce Visual Basic.

Řetězcové proměnné

Instanci řetězce lze přiřadit hodnotu literálu, která představuje řadu znaků. Příklad:

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

Proměnná String může také přijmout libovolný výraz, který se vyhodnotí jako řetězec. Příklady:

    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"

Všechny literály přiřazené proměnné String musí být uzavřeny do uvozovek (""). To znamená, že uvozovky v řetězci nemohou být reprezentovány uvozovkami. Například následující kód způsobí chybu kompilátoru:

Dim myString As String

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

Tento kód způsobí chybu, protože kompilátor ukončí řetězec za druhou uvozovku a zbytek řetězce se interpretuje jako kód. Chcete-li tento problém vyřešit, Jazyk Visual Basic interpretuje dvě uvozovky v řetězcovém literálu jako jednu uvozovku v řetězci. Následující příklad ukazuje správný způsob, jak do řetězce zahrnout uvozovky:

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

V předchozím příkladu se ze dvou uvozovek předcházejících slovu Look stane jedna uvozovka v řetězci. Tři uvozovky na konci řádku představují jednu uvozovku v řetězci a znak ukončení řetězce.

Řetězcové literály můžou obsahovat více řádků:

Dim x = "hello  
world"  

Výsledný řetězec obsahuje sekvence newline, které jste použili v řetězcovém literálu (vbcr, vbcrlf atd.). Původní alternativní řešení už nemusíte používat:

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

Znaky v řetězcích

Řetězec lze považovat za řadu Char hodnot a String typ obsahuje integrované funkce, které umožňují provádět mnoho manipulací s řetězcem, který se podobá manipulaci s poli. Stejně jako u všech polí v rozhraní .NET Framework se jedná o pole založená na nule. Pomocí vlastnosti můžete odkazovat na určitý znak v řetězci Chars , který poskytuje způsob, jak získat přístup ke znaku podle pozice, ve které se v řetězci zobrazuje. Příklad:

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

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

V předchozím příkladu Chars vrátí vlastnost řetězce čtvrtý znak v řetězci, který je D, a přiřadí jej .myChar Délku konkrétního řetězce můžete získat také prostřednictvím Length vlastnosti. Pokud potřebujete u řetězce provádět více manipulací typu pole, můžete ji pomocí funkce řetězce převést na pole Char instancí ToCharArray . Příklad:

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

Proměnná myArray nyní obsahuje pole Char hodnot, z nichž každý představuje znak z myString.

Neměnnost řetězců

Řetězec je neměnný, což znamená, že jeho hodnotu nelze po vytvoření změnit. To vám ale nebrání v přiřazování více než jedné hodnoty k řetězcové proměnné. Představte si následující příklad:

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

V této části se vytvoří řetězcová proměnná s danou hodnotou a její hodnota se změní.

Konkrétněji na prvním řádku je vytvořena instance typu String a vzhledem k hodnotě This string is immutable. Na druhém řádku příkladu se vytvoří nová instance a získá hodnotu Or is it?a proměnná řetězce zahodí svůj odkaz na první instanci a uloží odkaz na novou instanci.

Na rozdíl od jiných vnitřních datových typů String je referenčním typem. Pokud je proměnná typu odkazu předána jako argument funkci nebo podprogramu, předá se odkaz na adresu paměti, ve které jsou uložena data, místo skutečné hodnoty řetězce. V předchozím příkladu tedy název proměnné zůstane stejný, ale odkazuje na novou a jinou instanci String třídy, která obsahuje novou hodnotu.

Viz také