TRATAMENTO DE STRINGS

PEGUDO 03/02/2010 14:21:39
#333505
Caros amigos,

Gostaria de que meu programa retornasse as srings contidas entre determinadas strings.

Exemplo:
gostaria que:
<font size=3 face=arial>VBMania</font>

retornasse:
VBMania

Tem como?

WEBMASTER 03/02/2010 14:27:27
#333508
Basicamente falando de forma simples...split do split.
Existem codigo em VB que fazem isso ai, essa tecnica se chama token, voce diz parametros iniciais e finais e aguarda tudo no meio...
MARCELO.TREZE 03/02/2010 14:31:11
#333509
tenta este POG

Private Sub Command1_Click()
Dim Inicial As Integer
Dim Final As Integer
Linha = [Ô]<font size=3 face=arial>VBMania</font>[Ô]
Inicial = InStr(1, Linha, [Ô]>[Ô])
Final = InStr(Inicial, Linha, [Ô]</font>[Ô])
MsgBox Mid(Linha, Inicial + 1, (Final - Inicial) - 1)
End Sub
ASHKATCHUP 03/02/2010 14:31:19
#333510
P.O.G. 2.0


Private Function func_Retorna_Valor_Tag(sTag As String) As String
Dim iPosInicial As Integer
Dim iPosFinal As Integer
Dim iAuxiliar As Integer
[ô]
On Error GoTo ErroFunc
[ô]
For iAuxiliar = 1 To Len(sTag)
[ô]
If Mid(sTag, iAuxiliar, 1) = [Ô]>[Ô] Then
iPosInicial = iAuxiliar + 1
Exit For
End If
[ô]
Next
[ô]
For iAuxiliar = iPosInicial To Len(sTag)
[ô]
If Mid(sTag, iAuxiliar, 1) = [Ô]<[Ô] Then
iPosFinal = iAuxiliar
Exit For
End If
[ô]
Next
[ô]
func_Retorna_Valor_Tag = Mid(sTag, iPosInicial, iPosFinal - iPosInicial)
Exit Function
[ô]
ErroFunc:
func_Retorna_Valor_Tag = [Ô][Ô]
End Function
PEGUDO 03/02/2010 15:05:56
#333516
boa tarde a todos

ASHKATCHUP, tentei seu código mas na última linha antes do erro:

func_Retorna_Valor_Tag = Mid(sTag, iPosInicial, iPosFinal - iPosInicial)

Dá o erro: Argumento ou chamada de procedimento inválida.

Lembrando que meu programa está lendo o texto que está dentro de um TextBox multiline (text1) para jogar a string tratada dentro da TextBox2 (text2)

obrigado
ASHKATCHUP 03/02/2010 15:40:33
#333519
Você está passando somente uma tag ou mais?

Poderia postar o exemplo de texto que você está usando?
PEGUDO 03/02/2010 20:00:19
#333546
Olá ASHKATCHUP,

Estou passando mais tags.
O programa busca textos em páginas de internet, entendeu?
Daí são inúmeras tags.

Eu pensei, em primeiro lugar, eliminar os comando das tags (por exemplo, body, font, table...);
Daí só ficarão os caracteres [Ô]<[Ô] (menor que) e [Ô]>[Ô] (maior que);
Depois fazer um Replace para eliminá-las.

O que você acha?
MARCELO.TREZE 03/02/2010 20:02:55
#333548
tentou isto

Private Sub Command1_Click()
Dim Inicial As Integer
Dim Final As Integer
Linha = [Ô]<font size=3 face=arial>VBMania</font>[Ô]
Inicial = InStr(1, Linha, [Ô]>[Ô])
Final = InStr(Inicial, Linha, [Ô]</font>[Ô])
MsgBox Mid(Linha, Inicial + 1, (Final - Inicial) - 1)
End Sub

PEGUDO 04/02/2010 09:41:20
#333581
Olá MARCELO-TREZE

Tentei isto sim funcionou como o esperado.
O problema é que, como eu disse, o programa lê um código-fonte HTML todo, do início até o fim.
Necessito que se faça um loop, para ler todo o conteúdo do arquivo e eleiminar todas as tags e colocar um separador [Ô],[Ô] (vírgula).
Estou trabalhando em cima do seu exemplo e do ASHKATCHUP, mas só consigo pegar o primeiro texto, ou seja, o título da página.

Obrigado pela força.
Desculpe o incômodo.
PEGUDO 04/02/2010 12:53:25
#333614
Galera consegui resolver meu problema.
Eu fiz assim:

Private Sub Command1_Click()
Dim MyString, MyString2() As String

MyString = Text1.Text

While MyString Like [Ô]*>*[Ô]
Mid(MyString, InStr(1, MyString, [Ô]<[Ô]), InStr(1, MyString, [Ô]>[Ô]) - InStr(1, MyString, [Ô]<[Ô]) + 1) = _
String(InStr(1, MyString, [Ô]>[Ô]) - InStr(1, MyString, [Ô]<[Ô]) + 1, [Ô]_[Ô])
Wend
MyString = Replace(MyString, [Ô]_[Ô], [Ô][Ô])
MyString2 = Split(MyString, [Ô];[Ô], , vbTextCompare)

For j = LBound(MyString2) To UBound(MyString2)
If Not MyString2(j) = [Ô][Ô] Then
Text2.Text = Text2.Text & MyString2(j) & [Ô] [Ô]
End If
Next
End Sub

Valeu pelas ajudas e dicas
Tópico encerrado , respostas não são mais permitidas