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

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

Řetězcové proměnné

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

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

Proměnná String může také přijímat 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"

Jakýkoli literál přiřazený k String proměnné musí být uzavřený v uvozovkách (""). To znamená, že uvozovky v řetězci nelze reprezentovat 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 uvozovkou a zbytek řetězce se interpretuje jako kód. Pokud chcete tento problém vyřešit, Visual Basic dvě uvozovky v řetězcové literálu jako jednu uvozovky 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 dvě uvozovky předcházející slovem stanou v řetězci jednou Look uvozovkou. Tři uvozovky na konci řádku představují jednu uvozovky v řetězci a znak ukončení řetězce.

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

Dim x = "hello  
world"  

Výsledný řetězec obsahuje sekvence nového řádku, které jste použili v řetězcového literálu (vbcr, vbcrlf atd.). Už nepotřebujete používat původní alternativní řešení:

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

Znaky v řetězcích

Řetězec si lze myslít jako řadu hodnot a typ obsahuje integrované funkce, které umožňují provádět mnoho manipulací s řetězcem, které se podobají manipulaci s Char String poli. Stejně jako všechna pole .NET Framework jsou to pole založená na nule. Konkrétní znak v řetězci můžete odkazovat prostřednictvím vlastnosti , která poskytuje způsob, jak získat přístup ke znaku podle pozice, ve které se v Chars řetězci nachází. Například:

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

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

Ve výše uvedeném příkladu vrátí vlastnost řetězce čtvrtý znak v řetězci , což je , a přiřadí Chars D ho k myChar . Délku konkrétního řetězce můžete získat také prostřednictvím Length vlastnosti . Pokud potřebujete s řetězcem provést více manipulací s typem pole, můžete ho převést na pole instancí pomocí Char ToCharArray funkce řetězce. Například:

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

Proměnná myArray teď 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šak nezabrání přiřazení více než jedné hodnoty řetězcové proměnné. Uvažujte následující příklad:

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

Tady se vytvoří řetězcová proměnná s danou hodnotou a pak se její hodnota změní.

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

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

Viz také