Noções básicas de cadeia de caracteres no Visual Basic
O String
tipo de dados representa uma série de caracteres (cada um representando por sua vez uma instância do Char
tipo de dados). Este tópico apresenta os conceitos básicos de cadeias de caracteres no Visual Basic.
Variáveis de cadeia de caracteres
Uma ocorrência de uma cadeia de caracteres pode ser atribuída a um valor literal que representa uma série de caracteres. Por exemplo:
Dim MyString As String
MyString = "This is an example of the String data type"
Uma String
variável também pode aceitar qualquer expressão avaliada como uma cadeia de caracteres. Seguem-se alguns exemplos:
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"
Qualquer literal atribuído a uma String
variável deve ser colocado entre aspas (""). Isso significa que uma aspa dentro de uma cadeia de caracteres não pode ser representada por aspas. Por exemplo, o código a seguir causa um erro de compilador:
Dim myString As String
' This line would cause an error.
' myString = "He said, "Look at this example!""
Esse código causa um erro porque o compilador encerra a cadeia de caracteres após as aspas e o restante da cadeia de caracteres é interpretado como código. Para resolver esse problema, Visual Basic interpreta duas aspas em uma cadeia de caracteres literal como uma aspa na cadeia de caracteres. O exemplo a seguir demonstra a maneira correta de incluir aspas em uma cadeia de caracteres:
' The value of myString is: He said, "Look at this example!"
myString = "He said, ""Look at this example!"""
No exemplo anterior, as duas aspas que precedem a palavra Look
tornam-se uma aspa na cadeia de caracteres. As três aspas no final da linha representam uma aspa na cadeia de caracteres e o caractere de terminação da cadeia de caracteres.
Os literais de cadeia de caracteres podem conter várias linhas:
Dim x = "hello
world"
A cadeia de caracteres resultante contém sequências de nova linha que você usou em seu literal de cadeia de caracteres (vbcr, vbcrlf, etc.). Você não precisa mais usar a solução antiga:
Dim x = <xml><![CDATA[Hello
World]]></xml>.Value
Caracteres em cadeias de caracteres
Uma cadeia de caracteres pode ser pensada como uma série de valores, e o String
tipo tem funções internas que permitem executar muitas manipulações em uma cadeia de Char
caracteres que se assemelham às manipulações permitidas por matrizes. Como todas as matrizes no .NET Framework, essas são matrizes baseadas em zero. Você pode se referir a um caractere específico em uma cadeia de caracteres através da Chars
propriedade, que fornece uma maneira de acessar um caractere pela posição em que ele aparece na cadeia de caracteres. Por exemplo:
Dim myString As String = "ABCDE"
Dim myChar As Char
' The value of myChar is "D".
myChar = myString.Chars(3)
No exemplo acima, a Chars
propriedade da cadeia de caracteres retorna o quarto caractere na cadeia de caracteres, que é D
, e a atribui a myChar
. Você também pode obter o comprimento de uma cadeia de caracteres específica através da Length
propriedade. Se você precisar executar várias manipulações de tipo de matriz em uma cadeia de caracteres, poderá convertê-la em uma matriz de Char
instâncias usando a ToCharArray
função da cadeia de caracteres. Por exemplo:
Dim myString As String = "abcdefghijklmnop"
Dim myArray As Char() = myString.ToCharArray
A variável myArray
agora contém uma matriz de Char
valores, cada um representando um caractere de myString
.
A imutabilidade das cordas
Uma cadeia de caracteres é imutável, o que significa que seu valor não pode ser alterado depois de criada. No entanto, isso não impede que você atribua mais de um valor a uma variável de cadeia de caracteres. Considere o seguinte exemplo:
Dim myString As String = "This string is immutable"
myString = "Or is it?"
Aqui, uma variável de cadeia de caracteres é criada, dado um valor e, em seguida, seu valor é alterado.
Mais especificamente, na primeira linha, uma instância do tipo String
é criada e recebe o valor This string is immutable
. Na segunda linha do exemplo, uma nova instância é criada e recebe o valor Or is it?
, e a variável string descarta sua referência à primeira instância e armazena uma referência à nova instância.
Ao contrário de outros tipos de dados intrínsecos, String
é um tipo de referência. Quando uma variável do tipo de referência é passada como um argumento para uma função ou sub-rotina, uma referência ao endereço de memória onde os dados são armazenados é passada em vez do valor real da cadeia de caracteres. Assim, no exemplo anterior, o nome da variável permanece o mesmo, mas aponta para uma instância nova e diferente da String
classe, que contém o novo valor.