SPLIT?

THRON 11/08/2016 09:34:54
#465717
Bom dia galera,

Como faço para tentar retirar um determinado texto de uma string que não segue um padrão, ex:

<iframe width=[Ô]420[Ô] height=[Ô]315[Ô] src=[Ô]https://www.youtube.com/embed/Zi8vJ_lMxQI[Ô] frameborder=[Ô]0[Ô] allowfullscreen></iframe>

Tenho esse texto na string, e gostaria de apenas retirar o link embed do texto, eu pensei em split com [Ô] porem tem outras apas na string, também pensei em utilizar o Mid
mid(text1.text,1,5), porém nem sempre são 1 á 5 caracteres
ACCIOLLY 11/08/2016 09:46:35
#465718
porque não troca as aspas duplas por simples só no link? Acho que ia resolver seu problema com o split.
THRON 11/08/2016 09:52:53
#465720
pq eu carrego o youtube no web e ele localiza o link embed e joga na string
THRON 11/08/2016 10:13:07
#465722
Fiz uma gambiarra bem absurda aqui, funcionou, mas existe algum meio de fazer isso sem essa gambiarra toda? uhaiudaiusd


Jogo o link no texto 1 > quebra o texto na listbox > monto o link > acessa o link


ACCIOLLY 11/08/2016 10:15:45
#465723
Citação:

<iframe width=[Ô]420[Ô] height=[Ô]315[Ô] src=[Ô]https://www.youtube.com/embed/Zi8vJ_lMxQI[Ô] frameborder=[Ô]0[Ô] allowfullscreen></iframe>



Mas se tudo isso acima é uma string, você pode sim manipular. Não tem problema nenhum:

<iframe width=[Ô]420[Ô] height=[Ô]315[Ô] src=[ô]https://www.youtube.com/embed/Zi8vJ_lMxQI[ô] frameborder=[Ô]0[Ô] allowfullscreen></iframe>
THRON 11/08/2016 10:27:35
#465725
mas manipular por codigo? como?
OCELOT 11/08/2016 12:06:51
#465730
Não precisa fazer split, você pode usar uma expressão regular para capturar diretamente o valor que você quer

Private regexYoutube As  New Regex([Ô]<iframe.*?src=[Ô][Ô]http(?:s)?://www.youtube.com/embed/(.*?)[Ô][Ô][Ô], RegexOptions.Compiled)

Function PegarIDYoutube(texto As String) As String
dim match = regexYoutube.Match(texto)
If match.Groups.Count>1 Then
Return match.Groups(1).Value
End If
Return Nothing
End Function


Só passar a string para esta função que ela retorna só o ID do youtube ou nothing se não encontrar

No caso é uma Regex bem simples, se quebrar ela ficaria

<iframe -> procura por este texto

.*? -> encontra qualquer caractere repetidamente, o menor numero de vezes possíveis

src=[Ô]http -> procura por este texto

(?:s)? -> procura pelo caractere [ô]s[ô] zero ou mais vezes e não captura o resultado, não deve ser necessário mas assim suporta endereço com http e https

://www.youtube.com/embed/ -> procura por este texto

(.*?) -> captura todos os caracteres que encontrar, o menor numero de vezes possíveis, este é o ID do youtube

[Ô] -> procura pela aspas duplas, isto é para saber onde termina o ID do youtube
KERPLUNK 11/08/2016 19:50:13
#465750
Nada disso... Isso é coisa de amador. Use a API do youtube e não ficar decifrando HTML. Até porque o código HTML do youtube muda numa periodicidade considerável e todo o trabalho que você teve para fazer vai por água abaixo de uma semana para outra.
MICHAELL 11/08/2016 21:14:53
#465755
Resposta escolhida
voce pode utilizar um metodo comum para extrair uma palavra entre duas strings, que pode ser inclusive aproveitado para extrair outras palavras.

encontrei esse metodo:

  static private String StringEntreString(String Texto, String StrInicio, String StrFinal = [Ô][Ô])
{
int Ini, Fim, Diff;
Ini = Texto.IndexOf(StrInicio);
if (Ini == -1) return [Ô][Ô];
Fim = Texto.IndexOf(StrFinal, Ini);
if (Ini == Fim || Fim == -1) Fim = Texto.Length;
if (Ini > 0) Ini = Ini + StrInicio.Length;
if (Fim > 0) Fim = Fim + StrFinal.Length;
Diff = ((Fim - Ini) - StrFinal.Length);
if ((Fim > Ini) && (Diff > 0))
return Texto.Substring(Ini, Diff);
else
return [Ô][Ô];

}


no seu exemplo, para utilizar seria algo como:
string url = StringEntreString(txtURL.Text, [Ô]embed/[Ô], [Ô]\[Ô][Ô]); // pega o que esta entre [Ô]embed/[Ô] e \[Ô] (aspas)
Tópico encerrado , respostas não são mais permitidas