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