Поделиться через


Основы строк в 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 класса, который содержит новое значение.

См. также