Ir para conteúdo

Arquivado

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

SiLLeNt

Usando ER array, separando strings NO VB

Recommended Posts

Viu pessoal, to com uma duvida aqui, to usando o VB express e quero transformar esse código aqui em php pra vb

 

preg_match_all("/[0-9]*,[0-9]{4}/",$info,$quotes);$result["dolar_com"]=$quotes[0][1];$result["dolar_par"]=$quotes[0][3];$result["dolar_tur"]=$quotes[0][7];$result["euro"]=$quotes[0][9];return $result;}

to quebrando a cabeça aqui, tentei fazer de outras maneiras usando Split, mas sei lá.. não consegi

 

espero a ajuda de vcs ae

 

Desde já valeu ae :)

Compartilhar este post


Link para o post
Compartilhar em outros sites

O que tem em "info"? Uma string contendo números? Se sim, eles estão separados pelo quê? Espaço?Abraços,Graymalkin

Compartilhar este post


Link para o post
Compartilhar em outros sites

vo explica direitinho...

 

o que eu tenho lá é uma string

 

eu pego uma página via "objXML = CreateObject("Msxml2.XMLHTTP")"

 

Quando ela vem eu quero trata os dados.. que vem todo em HTML

eu queria pegar a cotação do dólar

ae em php eu pegava as informações daquele jeito, agora eu queria transforma isso pra vb

 

A variavel $info basicamente contém isso aqui:

 

<HTML>	<HEAD>		<title>Moedas</title>		<link href="http://www.investnews.com.br/includes/estilos.css" type="text/css" rel="stylesheet">	</HEAD>	<body>		<P><table id="Table1" cellspacing="0" cellpadding="2" border="0" style="width:100%;border-collapse:collapse;">	<tr style="height:20px;">		<td class="tabela_titulo" style="width:50%;">Moedas</td><td class="tabela_titulo" valign="Bottom" colspan="2" style="width:50%;"></td>	</tr><tr class="bg_medio" style="border-color:#0CCCCC;border-width:1px;border-style:Solid;">		<td class="texto_moedas" style="width:80%;"> </td><td class="texto_moedas" style="width:40px;">Compra</td><td class="texto_moedas" style="width:40px;">Venda</td>	</tr><tr>		<td class="tabela_linha2 texto_moedas">US$ Com (12/05 17:43)</td><td class="tabela_linha2 texto_moedas">	  2,1410</td><td class="tabela_linha2 texto_moedas">	  2,1430</td>	</tr><tr>		<td class="tabela_linha1 texto_moedas">US$ Par (12/05 15:42)</td><td class="tabela_linha1 texto_moedas">	  2,2000</td><td class="tabela_linha1 texto_moedas">	  2,3000</td>	</tr><tr>		<td class="tabela_linha2 texto_moedas">US$ Ptax (12/05 00:00)</td><td class="tabela_linha2 texto_moedas">	  2,1299</td><td class="tabela_linha2 texto_moedas">	  2,1307</td>	</tr><tr>		<td class="tabela_linha1 texto_moedas">US$ Tur (12/05 16:35)</td><td class="tabela_linha1 texto_moedas">	  2,0650</td><td class="tabela_linha1 texto_moedas">	  2,2150</td>	</tr><tr>		<td class="tabela_linha2 texto_moedas">Euro (12/05 20:57)</td><td class="tabela_linha2 texto_moedas">	  2,7495</td><td class="tabela_linha2 texto_moedas">	  2,7512</td>	</tr><tr>		<td class="tabela_linha1 texto_moedas">Iene (12/05 16:40)</td><td class="tabela_linha1 texto_moedas">	  0,0195</td><td class="tabela_linha1 texto_moedas">	  0,0195</td>	</tr><tr>		<td class="tabela_linha2 texto_moedas">Peso Ar (12/05 16:40)</td><td class="tabela_linha2 texto_moedas">	  0,7009</td><td class="tabela_linha2 texto_moedas">	  0,7099</td>	</tr></table>			<table id="Table2" cellspacing="0" cellpadding="2" border="0" style="width:100%;border-collapse:collapse;">	<tr class="tabela_rodape">		<td> Fonte: InvestNews (R$)</td>	</tr></table>			</P>	</body></HTML>

Eu quero pega somente os dados que tem a cotação do dólar...

 

Já tentei faze um monte de coisa aqui

mas nao ta dando certo :(((

Compartilhar este post


Link para o post
Compartilhar em outros sites

na boa...

 

consegui arruma aqui a função

só que só ta retornando um resultado e nao ta vindo todos

 

veja a função:

Private Sub processaDados(ByVal arqHtml As String)		Dim r As New Regex("[0-9]*,[0-9]{4}", RegexOptions.ExplicitCapture And RegexOptions.Multiline And RegexOptions.Compiled And RegexOptions.IgnoreCase)		Dim resultado		resultado = r.Match(arqHtml).Groups.Count		txtDebug.Text = resultado	End Sub

o valor do resultado sempre ta sendo 1....

 

como eu faço pra percorrer todos os resultados ??

Compartilhar este post


Link para o post
Compartilhar em outros sites

Já que é HTML você pode fazer isso com o WebBrowser (inclusive acredito que você poderia até mesmo baixar a página por ele):

 

Dim b As New WebBrowser()		Dim valor As Decimal		b.DocumentText = HTMLDAPÁGINA		b.Refresh()		Do While Not b.ReadyState = WebBrowserReadyState.Complete			Application.DoEvents()		Loop		For Each it As HtmlElement In b.Document.All			If it.TagName = "TD" Then				Debug.WriteLine(it.OuterText)				Try					valor = Decimal.Parse(it.OuterText)					MessageBox.Show(valor.ToString())				Catch ex As Exception					'nada				End Try			End If		Next it

Apenas substitua o HTMLDAPÁGINA pelo nome da sua string que contém o código da página.

 

Certo? ;)

 

Graymalkin

Compartilhar este post


Link para o post
Compartilhar em outros sites

me compliquei mais tentando faze desse jeito.. eu nao manj desse objeto ahuiahuauia

 

mas tipo... com aquele jeito ali eu acho que consegui...

 

só que eu so to conseguindo pegar um valor...

 

Eu testei a ER num programinha aqui... e ela ta retornando todos os dados certinho

mas quando eu mando ela pro VB ela só traz um resultado.. talvez eu nao esteja conseguindo navegar pelos resultados

mas Um valor eu consigo ver.. os outros nao aparecem... :(

 

Olhem o código:

 

Private Sub processaDados(ByVal arqHtml As String)		Dim r As New Regex("[0-9]*,[0-9]{4}", RegexOptions.ExplicitCapture And RegexOptions.Multiline And RegexOptions.Compiled And RegexOptions.IgnoreCase)		Dim resultado		resultado = r.Match(arqHtml).Groups.Count		txtDebug.Text = resultado	End Sub

o valor de resultado é 1 ... sempre...

deveria vir 14 se eu nao me engano..

 

Deem uma força pra eu ae ...

 

desde ja agradeço...

Compartilhar este post


Link para o post
Compartilhar em outros sites

Sim, o seu erro é que você está utilizando Match, que retorna apenas a primeira ocorrência. Você deveria utilizar Matches (note o plural) para retornar todas as ocorrências. Veja o código abaixo que funcionou aqui comigo:

 

Dim r As New Regex("[0-9]*,[0-9]{4}", RegexOptions.ExplicitCapture And RegexOptions.Multiline And RegexOptions.Compiled And RegexOptions.IgnoreCase)		Dim valores As MatchCollection		valores = r.Matches(arqHtml)		For Each valor As Match In valores			Debug.WriteLine(valor.Value)		Next

Certo? ;)

 

Graymalkin

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.