字符串基础 (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 前面的两个引号将变为字符串中的一个引号。 行尾的三个引号表示字符串中的一个引号和字符串终止字符。
字符串中的字符
可以将字符串看作一系列 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 类新的其他实例,该实例保存新值。