Visual Basic 中的字串基礎
String
資料類型代表一系列字元 (每個依序代表 Char
資料類型的一個執行個體)。 本主題介紹 Visual Basic 中字串的基本概念。
字串變數
可將代表字元數列的常值指派給字串的執行個體。 例如:
Dim MyString As String
MyString = "This is an example of the String data type"
String
變數也可以接受評估為字串的任何運算式。 範例如下所示:
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"
指派給 String
變數的任何常值必須括在引號 ("") 內。 這表示無法以引號表示字串內的引號。 例如,下列程式碼會導致編譯器錯誤:
Dim myString As String
' This line would cause an error.
' myString = "He said, "Look at this example!""
此程式碼會造成錯誤,因為編譯器會終止第二個引號後的字串,並將字串的其餘部分解譯為程式碼。 為解決此問題,Visual Basic 會將字串常值中的兩個引號解譯為字串中的一個引號。 下列範例示範在字串中包含引號的正確方式:
' The value of myString is: He said, "Look at this example!"
myString = "He said, ""Look at this example!"""
在上述範例中,Look
文字前面的兩個引號會成為字串中的一個引號。 一行結尾處的三個引號表示字串和字串結束字元的一個引號。
字串常值可以包含多行:
Dim x = "hello
world"
產生的字串包含用於字串常值 (vbcr、vbcrlf 等) 的新行字元序列。 您不再需要使用舊的因應措施:
Dim x = <xml><![CDATA[Hello
World]]></xml>.Value
字串中的字元
字串可以視為 Char
值序列,且 String
類型具有內建函式,可讓您在字串上執行許多操作 (類似於陣列所允許的操作)。 如 .NET Framework 中的所有陣列,這些都是以零起始的陣列。 您可以透過 Chars
屬性參考字串中的特殊字元 ,讓您能夠依字元在字串中的出現位置存取該字元。 例如:
Dim myString As String = "ABCDE"
Dim myChar As Char
' The value of myChar is "D".
myChar = myString.Chars(3)
在上述範例中,字串的 Chars
屬性會傳回字串中的第四個字元,也就是 D
,並將其指派給 myChar
。 您也可以透過 Length
屬性取得特定字串的長度。 如果您需要在字串上執行多個陣列類型操作,您可以使用字串的 ToCharArray
函式將它轉換為 Char
執行個體陣列。 例如:
Dim myString As String = "abcdefghijklmnop"
Dim myArray As Char() = myString.ToCharArray
變數 myArray
現在包含 Char
值的陣列,每個都代表 myString
的一個字元。
字串的不變性
字串不可變,也就是一旦建立其值後,就無法變更。 不過,這不會讓您將多個值指派給一個字串變數。 請考慮下列範例:
Dim myString As String = "This string is immutable"
myString = "Or is it?"
在這裡會建立字串變數、指定值,然後變更其值。
更具體來說,在第一行中,會建立類型 String
的執行個體並提供值 This string is immutable
。 在此範例的第二行,建立新執行個體並指定值 Or is it?
,且字串變數會捨棄其對第一個執行個體的參考,並儲存新執行個體的參考。
不同於其他內建資料類型,String
是參考類型。 將參考類型的變數做為引數傳遞給函式或副程式時,會傳遞儲存資料的記憶體位址的參考,而不是字串的實際值。 因此在前一個範例中,變數的名稱維持不變,但是它指向 String
類別的全新和不同的執行個體,其中包含新值。