Compartilhar via


Noções básicas de cadeias de caracteres no Visual Basic

O tipo de dados String representa uma série de caracteres (cada um representando, por sua vez, uma instância do tipo de dados Char). Este tópico apresenta os conceitos básicos de cadeias de caracteres no Visual Basic.

Variáveis de cadeia de caracteres

Uma instâ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 variável String também pode aceitar qualquer expressão que seja avaliada como uma cadeia de caracteres. São mostrados exemplos abaixo:

    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 variável String deve estar entre aspas (""). Isso significa que uma aspa dentro de uma cadeia de caracteres não pode ser representada por uma aspa. Por exemplo, o código a seguir gera um erro do 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 a segunda aspa e o restante da cadeia de caracteres é interpretado como código. Para resolver esse problema, o Visual Basic interpreta duas aspas em um literal de cadeia de caracteres como uma aspa na cadeia de caracteres. O exemplo a seguir demonstra a maneira correta de incluir uma 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 anteriores à palavra Look se tornam uma aspas na cadeia de caracteres. As três aspas no final da linha representam uma aspas na cadeia de caracteres e o caractere de encerramento da cadeia de caracteres.

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 no seu literal de cadeia de caracteres (vbcr, vbcrlf, etc.). Você não precisa mais usar a solução alternativa antiga:

Dim x = <xml><![CDATA[Hello  
World]]></xml>.Value  

Caracteres em cadeias de caracteres

Uma cadeia de caracteres pode ser considerada como uma série de valores Char, e o tipo String tem funções internas que permitem executar muitas manipulações em uma cadeia de caracteres que se assemelham às manipulações permitidas por matrizes. Como todas as matrizes em .NET Framework, elas são matrizes baseadas em zero. Você pode se referir a um caractere específico em uma cadeia de caracteres por meio da propriedade Chars, 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 propriedade Chars da cadeia de caracteres retorna o quarto caractere na cadeia de caracteres, que é D, e o atribui a myChar. Você também pode obter o comprimento de uma cadeia de caracteres específica por meio da propriedade Length. Se você precisar executar várias manipulações de tipo de matriz em uma cadeia de caracteres, você poderá convertê-la em uma matriz de instâncias Char usando a função ToCharArray 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 valores Char, cada um representando um caractere de myString.

A imutabilidade das cadeias de caracteres

Uma cadeia de caracteres é imutável, o que significa que seu valor não pode ser alterado depois de criado. 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 de cadeia de caracteres 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 de 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 nova e diferente instância da classe String, que contém o novo valor.

Confira também