共用方式為


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 屬性取得特定字串的長度。 如果您需要對字串執行多個陣列類型操作,您可以使用字串的Char函式,將它轉換成ToCharArray實例的陣列。 例如:

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 ,其會保留新的值。

另請參閱