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 的一个新且不同的实例,该实例包含新值。

另请参阅