Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Ratcdm

Strings - VB 2008

Recommended Posts

Olá galera, este é o meu primeiro tópico no fórum iMasters e não sei se estou postando na área correta. Se eu cometi algum erro, me informem e eu tentarei corrigir.

 

O problema é que eu tenho um arquivo de texto comum no qual possuem TAG's que o usuário pode personalizar. Até aí tudo bem. Fica tudo salvo no arquivo de texto, mais ou menos assim:

Exemplo:

<tag1> = http://forum.imasters.com.br
<tag2> = http://www.google.com.br
<tag3> = http://www.youtube.com.br

 

Enfim, é uma lista enorme.

 

Existe um RichTextBox neste Form. Eu quero que, quando o usuário digite uma das TAG's no RichTextBox (como por exemplo <tag1>), a mesma seja substituída por aquilo que esteja depois do sinal de igual (como no caso http://forum.imasters.com.br).

 

Isso é possível? Grato, Ratcdm.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Bom, primeiro, estas tags estão guardadas aonde?

 

Em um arquivo de texto, cara. Tipo Tags.txt, organizados assim:

<tag1> = Arroz e Feijão
<tag2> = Coca-Cola

 

Aí eu quero que seja trocado no Richtextbox esses Tag's pelo que tem depois do sinal de igual "=". Assim:

Eu gosto de <tag1> acompanhada de <tag2>.

Ficaria assim:

Eu gosto de Arroz e Feijão acompanhada de Coca-Cola.

 

Tipo, o user pode trocar essas tags, entendeu?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Bom, se a suas tags forem sempre deste tipo <tag1>, <tag2> e assim vai indo, sem mudar o nome das tags, é sim possivel fazer um controle que leia o box e pegue estas tags, porem você precisaria guardá-las em um banco de dados, porque seria muito mais simples de pegá-las:

 

Este é um exemplo no evento Leave da RTB, SEM ESTAR NO BANCO DE DADOS:

 

 

Private Sub RichTextBox1_Leave(sender As System.Object, e As System.EventArgs) Handles RichTextBox1.Leave
       If RichTextBox1.Text.Contains("<tag1>") Then
           RichTextBox1.Text = RichTextBox1.Text.Replace("<tag1>", "Arroz")
       End If
   End Sub

 

 

Resultado:

 

Sem_t_tulo.jpgSem_t_tulo2.png

 

 

Porem você precisaria dessas tags salvas, e em um arquivo de texto talvez você precisaria utilizar o StreamReader, no mesmo evento, sem contar o código acima, cole:

 

 

Dim reader As System.IO.StreamReader
       reader = IO.File.OpenText("C:/testetag.txt")
       TextBox1.Text = reader.ReadToEnd.ToString()
       If TextBox1.Text.Contains("<tag1>") Then
           Dim iindex As Integer = TextBox1.Text.IndexOf("/") + 1
           TextBox1.Text = TextBox1.Text.Remove(0, iindex)
           RichTextBox1.Text = RichTextBox1.Text.Replace("<tag1>", TextBox1.Text)
       End If

 

 

Neste caso utilizei um textbox de teste para colocar todas as informações, e tambem só fiz com uma tag no controle:

 

 

Sem_t_tulo.pngSem_t_tulo2.pngSem_t_tulo3.pngSem_t_tulo4.png

 

Porem há um meio um pouco mais simples de fazer isso com os controles de texto delimitados, você pode ler dele aqui

Compartilhar este post


Link para o post
Compartilhar em outros sites

Ajudou muito!

 

Maaaaas... Falta uma coisa: As TAG's podem ser alteradas pelos usuários. Eu estava pensando em fazer um XML com elas, tipo, cada nó é a TAG e o conteúdo é o que vai substituir.

 

Enfim, seu código ajudou pra caramba, quebrou um excelente galho... Mas as tag's são variaveis...

 

:blush:

Compartilhar este post


Link para o post
Compartilhar em outros sites

Sim, essas tags são variáveis, por isso que eu falei para você guardar todas elas em um banco de dados, porque ai você puxa a tabela de tags inteira para um DataSet e separa as tags em um vetor UBound(tags,1), ou seja, de tamanho indefinido. Uma vez tendo essas tags dentro do vetor, você pode ler com um for cada tag e verificar se ela existe no texto e caso seja encontrada ele faz esse código:

 

 

If RichTextBox1.Text.Contains(tag(i)) Then
           RichTextBox1.Text = RichTextBox1.Text.Replace(tag(i).ToString(), "Arroz")
       End If

 

 

Dentro de um txt a gente não tem muito controle do que está fazendo, por isso fica mais complicado.

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.