Obrigado por visitar a devmedia.com.br!

Precisamos de você para divulgar nossos vídeos e cursos gratuitos para a comunidade.

Se você gosta da devmedia.com.br por favor dê-nos o seu clique para o Google+ e ajude outros desenvolvedores ao redor do mundo.



Obrigado por seu apoio!
Equipe DevMedia

sair sem compartilhar (x)
DevMedia - asp.net, Java, Delphi, SQL e web Design, tudo em um só lugar!
Bem vindo a DevMedia!
LOGIN:     SENHA:

Soluções rápidas no trabalho com char e string (VB e C#(csharp)) – Parte III

Esse tutorial foi desenvolvido com objetivo de apresentar algumas das maneiras que podem ser utilizadas para se trabalhar com strings.

Soluções rápidas no trabalho com char e string (VB e C#) – Parte III

 

9. Encontrar Todas as Ocorrências de um Texto Específico em uma String

 

Problema:

Você deseja contar a quantidade de ocorrências de um caractere ou uma palavra em uma string.

 

Solução:

Use o método String.IndexOf para localizar a ocorrência desejada.

O método abaixo retorna a quantidade de ocorrências:

 

' vb

Private Function QuantidadeAssociada(ByVal stringParaConsulta As String, _

ByVal procurarPor As String) As Integer

 

Dim Posicao As Integer = 0

Dim Ocorrencias As Integer = 0

 

' Esse loop existe enquanto Position = -1, que significa

' que não encontrou (caractere ou palavra) associada(s).

Do

Posicao = stringParaConsulta.IndexOf(procurarPor, Posicao)

If Posicao <> -1 Then

' Uma ocorrencia encontrada.

' Incrementa a quantidade de ocorrencias.

Ocorrencias += 1

 

' Move para frente na string a quantidade

' igual a quantidade da termo procurado.

Posicao += procurarPor.Length

End If

Loop Until Posicao = -1

 

Return Ocorrencias

 

End Function

 

// c#

private int QuantidadeAssociada(String stringParaConsulta ,

String procurarPor)

{

int Posicao = 0;

int Ocorrencias = 0;

 

// Esse loop existe enquanto Position = -1, que significa

// que não encontrou (caractere ou palavra) associada(s).

do

{

Posicao = stringParaConsulta.IndexOf(procurarPor, Posicao);

if (Posicao != -1)

{

// Uma ocorrencia encontrada.

// Incrementa a quantidade de ocorrencias.

Ocorrencias += 1;

 

// Move para frente na string a quantidade

// igual a quantidade da termo procurado.

Posicao += procurarPor.Length;

}

} while (Posicao != -1);

 

return Ocorrencias;

}

 

Agora é só consultar:

 

' vb

Dim Text As String = "consultando uma ocorrencia da palavra 'lição'. " & _

"consultando uma ocorrencia da palavra 'lição'. " & _

"consultando uma ocorrencia da palavra 'lição'. "

 

Response.Write(QuantidadeAssociada(Text, "lição"))

Response.Write("<br />")

Response.Write(QuantidadeAssociada(Text, "a"))

 

// c#

String Text= "consultando uma ocorrencia da palavra 'lição'. " +

"consultando uma ocorrencia da palavra 'lição'. " +

"consultando uma ocorrencia da palavra 'lição'. ";

 

Response.Write(QuantidadeAssociada(Text, "lição"));

Response.Write("<br />");

Response.Write(QuantidadeAssociada(Text, "a"));

 

Saída:

3

21

 

 

10. Substituir Todas as Ocorrências de um Texto Específico em uma String

 

Problema:

Você deseja substituir cada ocorrência de uma palavra ou caractere em uma string.

 

Solução:

Usar o método String.Replace.

 

' vb

Dim Texto As String = "consultando uma ocorrencia da palavra 'lição'." & _

"consultando uma ocorrencia da palavra 'lição'. " & _

"consultando uma ocorrencia da palavra 'lição'. "

 

Dim TextoSubstituido As String = Texto.Replace("lição", "questão")

 

// c#

String Texto = "consultando uma ocorrencia da palavra 'lição'." +

"consultando uma ocorrencia da palavra 'lição'. " +

"consultando uma ocorrencia da palavra 'lição'. ";

 

String TextoSubstituido = Texto.Replace("lição", "questão");

 

Saída:

consultando uma ocorrencia da palavra 'questão'. consultando uma ocorrencia da palavra 'questão'. consultando uma ocorrencia da palavra 'questão'.

 

 

11. Inverter a Seqüência de uma String

 

Problema:

Você necessita reverter a ordem das letras em uma string.

 

Solução:

Usar o método Array.Reverse.

 

' vb

Dim Texto As String = "Mudar a ordem das letras em uma frase."

 

' Converte Texto para um Array de Caractere

Dim Charactere() As Char = Texto.ToCharArray()

 

Array.Reverse(Charactere)

 

' Cria String com Array de Caracteres invertidos

Dim Reversed As New String(Charactere, 0, Charactere.Length)

 

Response.Write(Reversed)

 

// c#

String Texto = "Mudar a ordem das letras em uma frase.";

 

// Converte Texto para um Array de Caractere

Char[] Charactere = Texto.ToCharArray();

 

Array.Reverse(Charactere);

 

// Cria String com Array de Caracteres invertidos

String Reversed = new String(Charactere, 0, Charactere.Length);

 

Response.Write(Reversed);

 

Ou ainda, você pode utilizar a função StrReverse do VB6 que também é compatível no .NET:

 

Dim Texto As String = "Mudar a ordem das letras em uma frase."

 

Dim Reversed As String

 

' Faz inversão de Texto automaticamente

Reversed = StrReverse(Texto)

 

Response.Write(Reversed)

 

Saída:

.esarf amu me sartel sad medro a raduM

 

 

12. Verificar se a String e Null ou Empty

 

Problema:

Você necessita rapidamente checar se a string é null ou o tamanho é igual a zero.

 

Solução:

Use o método estático IsNullOrEmpty da classe String.

 

' vb

Dim verificaString As Boolean = String.IsNullOrEmpty(Texto)

 

// c#

bool verificaString = String.IsNullOrEmpty(Texto);

 

 

13. Inserir um Caractere Especial em uma String

 

Problema:

Você necessita usar caracteres estendidos que não contém entrada no teclado.

 

Solução:

Para inserir um caractere especial você deve informar qual o número do caractere Unicode. Para isso utilize a ferramenta “Mapa de Caracteres” do Windows, acessando o “Iniciar à Executar” na caixa abrir digite “charmap.exe” e clique em “OK”. Aparecerá a ferramenta conforme abaixo:

 

klsrtcsfig02.jpg

 

O número no canto inferior esquerdo (00A9) é o código em formato hexadecimal. O número no canto inferior direito (0169) é equivalente ao código decimal.

 

' vb

Dim CharCode As Integer = 169

Dim SpecialChar As Char = Convert.ToChar(CharCode)

Response.Write(SpecialChar.ToString())

 

// c#

int CharCode = 169;

Char SpecialChar = Convert.ToChar(CharCode);

Response.Write(SpecialChar.ToString());

 

Saída:

©

 

Para utilizar o formato em hexadecimal você deve colocar os caracteres &H antes do valor em hexadecimal para o VB e converter para o tipo Char. Para o c#, utilize a sobrecarga com System.Globalization.NumberStyles.HexNumber.

 

' vb

Dim SpecialChar As Char = Convert.ToChar(&HA9)

Response.Write(SpecialChar.ToString())

 

// c#

Char SpecialChar = Convert.ToChar(byte.Parse("A9",

System.Globalization.NumberStyles.HexNumber));

Response.Write(SpecialChar.ToString());

 

Saída:

©

 

 

14. Manipular Strings Rapidamente (StringBuilder)


Problema:

Você necessita desempenhar uma manipulação de string repetida, e deseja melhorar o desempenho.

 

Solução:

Use a classe System.Text.StringBuilder para desempenhar essa operação de string, e converta o final do resultado em uma string chamando ToString.

 

O problema de se trabalhar com strings é que a memória deve ser alocada cada vez que o conteúdo da string é modificado. Portanto, se nós fizermos um fluxo de repetição que interage 100 vezes, concatenando um caractere a uma string, teremos ao final 100 strings na memória, diferenciando-se cada uma delas pela adição de um simples caractere.

 

A classe StringBuilder soluciona este problema alocando uma área de trabalho (Buffer), onde seus métodos podem ser aplicados para esta string. Esses métodos incluem os modos para concatenar (append), inserir (insert), deletar (deletar), remover (remove) e substituir (replace) caracteres. Por fim, todas as operações ocorrem no Buffer e não requerem uma nova alocação de memória.

 

 

15. Manipular um URI

 

Problema:

Você deseja recuperar uma porção de um URI (semelhante como prefixo, diretório, página, string de consulta).

 

Solução:

Processe o URI usando a classe System.Uri.

 

' vb

Dim MyUri As New Uri("http://search.yahoo.com/bin/search?p=dog")

Response.Write(" Scheme: " & MyUri.Scheme & "<br />")

Response.Write(" Host:   " & MyUri.Host & "<br />")

Response.Write(" Path:   " & MyUri.AbsolutePath & "<br />")

Response.Write(" Query:  " & MyUri.Query & "<br />")

Response.Write(" Type:   " & MyUri.HostNameType.ToString() & "<br />")

Response.Write(" Port:   " & MyUri.Port & "<br />")

 

// c#

Uri MyUri = new Uri("http://search.yahoo.com/bin/search?p=dog");

Response.Write(" Scheme: " + MyUri.Scheme + "<br />");

Response.Write(" Host:   " + MyUri.Host + "<br />");

Response.Write(" Path:   " + MyUri.AbsolutePath + "<br />");

Response.Write(" Query:  " + MyUri.Query + "<br />");

Response.Write(" Type:   " + MyUri.HostNameType.ToString() + "<br />");

Response.Write(" Port:   " + MyUri.Port + "<br />");

 

Saída:

Scheme: http

Host: search.yahoo.com

Path: /bin/search

Query: ?p=dog

Type: Dns

Port: 80

 

 

Referências

 

Ø  Microsoft Visual Basic .NET Programmer's Cookbook / by Matthew MacDonald ;

Ø  Visual Basic 2005 Cookbook / By John Clark Craig, Tim Patrick ;

Ø  C# Cookbook, 2nd Edition / By Jay Hilyard, Stephen Teilhet ;

Ø  Essential C# 2.0 / By Mark Michaelis.





    5 COMENTÁRIOS

[Fechar]

Este post é fechado - você precisa ter acesso ao post para incluir um comentário.



Teste
Que bicha loca esse programador...


em 18/8/2007 15:07 - Responder

 

Rodolfo
Uiii rs.. Esse rapaizinho é o cara ehehehe... Certificado e tudo?! quando crescer quero ser igual a vc :D ! rs


em 20/8/2007 08:01 - Responder

 

Caio
Artigo muito bom Kallebezão!!!


em 20/8/2007 09:30 - Responder

 

Jcarvalho
achei sei post muito bom, mas tenho uma dúvida que acredito que voce ajude. Como faço em C# para procurar numa string se ela tem só números? É isso aí, como vejo se numa string tem apenas número e não outro caracter qualquer? fico esperando sua resposta


em 12/10/2007 08:05 - Responder

 

  Kallebe Lins
Confira o artigo anterior: Soluções rápidas no trabalho com char e string (VB e C#) – Parte II / 7. Interagir com Todos os Caracteres em uma String


em 30/10/2007 16:36 - Responder
 



[Este post ainda não foi associado a uma sequência]
Autor
Kallebe Lins

CONSULTOR .NET | ARQUITETO DE SOFTWARE | COORDENADOR DE PROJETOS .NET | Técnico em Sistemas Integrados de Gestão Empresarial | MCP Foundation | MCTS Web | MCTS Distributed | MCTS SQL SERVER 2005 | MCTS Windows Based | Microsoft Team Foundation Server 2010 | Microsoft Sharepoint 2010


Space do autor
Estatísticas
Favorito:
Comentários:
Feedback:
Utilidade:
2   1
[Fechar]

Você precisa estar logado para dar um feedback.

Clique aqui para efetuar o login
[Fechar]
Este post está disponível para assinantes da .net Magazine ou para quem possui Créditos DevMedia.

  Conheça os planos de créditos DevMedia e visualize esse post agora mesmo!

Plano conveniência – Neste plano este post custa R$ 0,00 (Compre agora)
Esse plano permite que você compre somente um post, pagando por ele seu preço sem desconto.

Plano ocasional: Aqui este post custa: R$ -1,00 (assinante) ou R$ -1,00 (não-assinante)
Este plano é ideal para quem tem interesse em mais de um post. Você compra um mínimo de R$ 50,00 em créditos e ganha, em média, 50% de desconto no preço do post. Compre Créditos agora!

Assinatura de Créditos (Plano econômico) – Aqui este post custa R$ -1,00
Este plano é ideal para quem tem interesse em muitos posts. Com esse plano você compra R$ 180,00 em créditos e ganha, em média, 80% de desconto no preço do post. Assine este plano agora!

> Saiba mais sobre o Sistema de Créditos DevMedia
web-03
DevMedia  |  Anuncie  |  Fale conosco
Hospedagem web por Porta 80 Web Hosting
2012 - Todos os Direitos Reservados a web-03