SPLIT?
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
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
porque não troca as aspas duplas por simples só no link? Acho que ia resolver seu problema com o split.
pq eu carrego o youtube no web e ele localiza o link embed e joga na string
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
Jogo o link no texto 1 > quebra o texto na listbox > monto o link > acessa o link
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>
mas manipular por codigo? como?
Não precisa fazer split, você pode usar uma expressão regular para capturar diretamente o valor que você quer
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
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
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.
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:
no seu exemplo, para utilizar seria algo como:
string url = StringEntreString(txtURL.Text, [Ô]embed/[Ô], [Ô]\[Ô][Ô]); // pega o que esta entre [Ô]embed/[Ô] e \[Ô] (aspas)
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