VB.NET - Strings : um novo enfoque.
O tipo de dado Strings é implementado no VB.NET com uma classe e não como uma estrutura e isto trouxe muitas implicações expandindo em muito as possibilidades de tratar e trabalhar com Strings.
Podemos definir Strings no VB.NET como uma representação imutável de caracteres ou ainda podemos dizer que no VB.NET as strings são implementadas como objetos da Classe Strings que faz parte do namespace System da plataforma .NET framework.
Para começar com Strings no VB.NET vamos dar uma olha por 'trás dos panos' usando o objeto Browser :
a - Inicie um novo projeto no Visual Studio.NET com as seguintes características (sinta-se a vontade para alterar a seu gosto.)
b- Pressione a tecla F2 para que seja exibida a janela do Object Browser
c- Do lado esquerdo da janela
ache o objeto -
mscrolib - e clique no sinal de mais (+)
para que os objetos sejam exibidos do lado direito: O objeto mscorlib faz parte do .NET framework e os objetos que ele contém são namespaces que podemos referenciar em nossos projetos. |
|
- Após expandir e visualizar os objetos ,
procure pelo item String e selecione-o - Você verá do lado direito teremos os membros ( métodos e propriedades) do objeto String. - Perceba que temos muitos métodos sobrecarregados (métodos com o mesmo nome mas com argumentos diferentes). Ex:
|
Talvez a maior diferença entre Strings no VB 6.0 e Strings no VB.NET é que no VB.NET é que Strings não podem ser declaradas com um tamanho fixo. Ao atribuir um valor a uma String o valor do tamanho determina o tamanho da String.
No VB.NET uma instância de uma String não pode ser alterada depois de criada. Mesmo que você altere o valor atribuído a String , na verdade uma nova instância da String será criada para conter a alteração. Por exemplo :
Dim nome
As
String =
"Jose Carlos Macoratti" nome = nome.Remove(19, 1) MsgBox("Meu nome é " & nome) |
Vejamos o que este 'inocente' código significa :
Dim nome As String = "Jose Carlos Macoratti" | -Declaramos a variável String e atribuímos a ela o valor "José Carlos Macoratti" , com isto alocamos a memória apropriada na String para armazenar o valor |
nome = nome.Remove(19, 1) | -Neste código estamos alterando o valor
da String - nome - pois estou removendo um caractere 't'
do nome ( o novo valor será igual a : Macorati) usando o
método - Remove. - Ao fazer isto uma nova instância da String será criada com o valor alterado e será retornado uma referência para a qual a variável nome esta definida. |
MsgBox("Meu nome é " & nome) | Exibimos o valor final da variável do tipo String - nome |
Os novos métodos e propriedades da classe String
Neste primeiro contato com o Strings no VB.NET vamos ver o que mudou a nivel de tratamento de Strings : quais os novos métodos e propriedades e como usá-los. Comecemos pelos mais usados ; a seguir uma tabela comparando os métodos no VB6 e no VB.NET :
VB 6.0 | VB.NET |
Len | .Length |
Mid | .Substring |
Replace | .Replace |
Instr | .IndexOf |
Ucase | .ToUpper |
Lcase | .ToLower |
Split | .Split |
Join | .Join |
1 - Obtendo o tamanho(comprimento) de uma String - Length
Length - Esta propriedade retorna o número de caracteres em uma string . Código exemplo :
Private
Sub
Button1_Click(ByVal
sender As
System.Object,
ByVal
e As System.EventArgs)
Handles Button1.Click Dim nome As String = "José Carlos Macoratti" Dim tamanho As Integer tamanho = nome.Length MsgBox("O número de caracteres em nome é : " & tamanho, MsgBoxStyle.Information, "Length") End Sub |
Observe a sintaxe usada : string.propriedade (a sintaxe é válida para as demais propriedades/métodos)
2- Obtendo partes de uma string (substrings) - Substring
Substring - Método que retorna uma substring pertencente a uma string :
Métodos sobrecarregagos : ( (para saber mais leia o artigo - VB.NET - Conceitos : Sobrecarga (Overloading) )
Private
Sub
Button2_Click(ByVal
sender As
System.Object,
ByVal
e As System.EventArgs)
Handles Button2.Click Dim nome As String = "Jefferson Andre Macoratti" Dim substring As String Dim sobrenome As String substring = nome.Substring(0, 1) 'retorna a letra J - posição inicial (0) da string substring = substring & nome.Substring(10, 1) 'retorna a letra A - posiçlão 10 da string substring = substring & nome.Substring(16, 1) 'retorna a letra M - posição 16 da string 'retorna as iniciais JAM do nome completo MsgBox(substring, MsgBoxStyle.Information, "Substring") sobrenome = nome.Substring(16, 9) 'extrai a palavra - Macoratti - a partir da posição 16 extraindo 9 caracteres 'retona - Macoratti MsgBox(sobrenome, MsgBoxStyle.Information, "Substring") End Sub |
Observe que :
3- Procurando uma string/substring dentro de outra string - IndexOf
IndexOf - método publico que retorna a posição de uma string/substring dentro de outra string.
Os métodos sobrecarregados são : (para saber mais leia o artigo - VB.NET - Conceitos : Sobrecarga (Overloading) )
- Overloads Public Function IndexOf(Char) As Integer : retorna o índice da primeira ocorrência do caracter Unicode na string
- Overloads Public Function IndexOf(String) As Integer : retorna o índice da primeira ocorrência da string na instância.
- Overloads Public Function IndexOf(Char, Integer) As Integer : retorna o índice da primeira ocorrência do caracter Unicode na string . A procura começa pela posição do caractere definido.
- Overloads Public Function IndexOf(String, Integer) As Integer : retorna o índice da primeira ocorrência da string na instância. A procura começa pela posição do caractere definido.
- Overloads Public Function IndexOf(Char, Integer, Integer) As Integer : retorna o índice da primeira ocorrência do caractere na instância. A procura começa pela posição do caractere definido e examina um número definido de posições de caracteres.
- Overloads Public Function IndexOf(String, Integer, Integer) As Integer : retorna o índice da primeira ocorrência da string na instância. A procura começa pela posição do caractere definido e examina um número definido de posições de caracteres.
Vejamos um exemplo :
Private
Sub
Button3_Click(ByVal
sender As
System.Object,
ByVal
e As System.EventArgs)
Handles Button3.Click Dim nome As String = "Jessica Naara Macoratti" Dim posicao As Integer posicao = nome.IndexOf("Naara") 'retorna 8 pois Naara tem inicio na posição 8 da string nome posicao = nome.IndexOf("M") 'retorna 14 que indica a posição da letra M na string posicao = nome.IndexOf("a", 7) 'retorna 9 que é a posição da primeira letra 'a' após a sétima posição posicao = nome.IndexOf("ra", 5) 'retorna 11 que indica posição de inicio da string 'ra' a partir da posição 5 End Sub |
4- Procurando e substituindo texto em uma string - Replace
Replace - Este método procura por um texto/caractere específico em uma string e o substitui por outro texto/caractere indicado.
Os métodos sobrecarregados são :
Overloads Public Function Replace(Char, Char) As String - Substitui todas as ocorrências do caracter Unicode especificado na String pelo caractere Unicode definido.
Overloads Public Function Replace(String, String) As String - Substitui todas as ocorrências do String Unicode especificado na String pela String Unicode definido.
Exemplo :
Dim texto
As
String
= " Nossa ! como esta calor " texto = texto.Replace("!", "!!!") texto = texto.Replace("calor", "frio") MsgBox(texto, MsgBoxStyle.Information) |
- Neste exemplo primeiro substituímos o
caractere ! por
!!! - A seguir substituímos a string 'Calor' pela string 'frio' - Exibimos o resultado com um msgbox - Nossa !!! como esta frio |
5 - Convertendo uma string para Caixa Alta e/ou Caixa Baixa - ToUper/ToLower
- Convertendo para caixa alta - ToUpper
Overloads Public Function ToUpper() As String - Retorna uma copia da String em caixa alta.
Overloads Public Function ToUpper(CultureInfo) As String - Retorna uma copia da String em caixa alta , levando em consideração a informação especifica da cultura.
Convertendo para caixa baixa: ToLower
Overloads Public Function ToLower() As String - Retorna uma copia da String em caixa baixa
Overloads Public Function ToLower(CultureInfo) As String - Retorna uma copia da String em caixa baixa , levando em consideração a informação especifica da cultura.
Obs: Alguns valores válidos para - CultureInfo
Nome Culture | Identificador Culture | Lingua-Regiao |
---|---|---|
"" (empty string) | 0x007F | invariant culture |
af | 0x0036 | Afrikaans |
af-ZA | 0x0436 | Afrikaans - South Africa |
sq | 0x001C | Albanian |
sq-AL | 0x041C | Albanian - Albania |
ar | 0x0001 | Arabic |
ar-DZ | 0x1401 | Arabic - Algeria |
ar-BH | 0x3C01 | Arabic - Bahrain |
ar-EG | 0x0C01 | Arabic - Egypt |
ar-IQ | 0x0801 | Arabic - Iraq |
Exemplos :
Ex1- Dim texto as string = " hoje é sexta feira " texto = texto.ToUpper Ex2- Console.WriteLine(Char.ToUpper("a"c)) |
O retorno será : HOJE É SEXTA
FEIRA O retorno será : A |
Ex3 - Dim texto as string = "JOSE CARLOS MACORATTI" texto = texto.ToLower Ex4- Console.WriteLine(Char.ToLower("A"c)) |
O retorno será : jose carlos
macoratti O retorno será : a |
6 - Criando matrizes (arrays) de strings com Split()
Overloads Public Function Split(ParamArray Char() AS String) - Este método identifica as substrings presentes em uma string que são delimitadas por um ou mais caracteres específicos em uma matriz , extrai as substrings e as coloca em uma matriz de strings.
Overloads Public Function Split(Char(), Integer) As String() - Este método identifica as substrings presentes em uma string que são delimitadas por um ou mais caracteres específicos em uma matriz , extrai as substrings e as coloca em uma matriz de strings. O inteiro é o parâmetro que especifica o número máximo de elementos da matriz a retornar.
Exemplo:
Vamos extrair as strings de uma caixa de texto Multiline e colocar cada string em um vetor para depois exibir cada uma em um controle ListBox . Abaixo temos a caixa de texto - TextoBox1 - exibindo uma relação de times de futebol separados por vírgula. Vamos extrair cada time , gerar uma matriz com os nomes dos times e a seguir exibi-las no controle ListBox1.
O código associado ao evento Click do
botão de comando - Button5 é o seguinte: - GetUpperBound(0) - indica o último elemento da matriz com dimensão indicada.(0)
|
Veja mais alguns resultados usando o método Split() :
Entrada | separador | Saida |
---|---|---|
"42, 12, 19" | new Char[] {',', ' '} | {"42", "", "12", "", "19"} |
"42..12..19" | new Char[] {'.'} | {"42", "", "12", "", "19"} |
"Banana" | new Char[] {'.'} | {"Banana"} |
"São\nPaulo" | new Char[] {} | {"São", "Paulo"} |
"Jose\nCarlos\nMacoratti" | null | {"José", "Carlos", "Macoratti"} |
Por enquanto é só , vamos continuar
falando de strings no VB.NET em um outro artigo...
Veja os Destaques e novidades do SUPER DVD VB (sempre atualizado) : clique e confira ! Quer migrar para o VB .NET ? Veja mais sistemas completos para a plataforma .NET no Super DVD .NET , confira... Quer aprender C# ??
Chegou o
Super DVD C# com exclusivo material de
suporte e vídeo aulas com curso básico sobre C# |
Gostou ? Compartilhe no Facebook Compartilhe no Twitter
Referências:
Super DVD Vídeo Aulas - Vídeo Aula sobre VB .NET, ASP .NET e C#
NET - LINQ a seu dispor - Sintaxe e Operadores - Macoratti ...