Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Datový String typ představuje řadu znaků. Každý znak 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é
Instance řetězce lze přiřadit literální hodnotu, 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řijmout libovolný výraz, který se vyhodnotí jako řetězec. Příklady jsou uvedené níže:
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ý proměnné String musí být uzavřen 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, 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 chápat jako sérii Char hodnot a String typ obsahuje integrované funkce, které umožňují provádět mnoho operací s řetězcem, jako jaké umožňují pole. 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. Napří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 vlastnost Chars řetězce vrátí čtvrtý znak v řetězci, což je D, a přiřadí jej do myChar. Délku konkrétního řetězce můžete získat také prostřednictvím Length vlastnosti. Pokud potřebujete provádět více manipulací typu pole na řetězci, můžete ho pomocí funkce Char převést na pole instancí ToCharArray . Napří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é. Podívejte se na 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 je jí přiřazena hodnota 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.