2011-10-26 12 views
2

現在、YouTubeの動画の埋め込みURLからYouTube動画のIDを抽出しようとしています。サブストリングを使用してYouTube動画の動画IDを取得する

私は現在、一例としてこれを使用しています

<iframe width="560" height="315" src="http://www.youtube.com/embed/aSVpBqOsC7o" frameborder="0" allowfullscreen></iframe> 

これまでのところ私のコードは、現在、次のようになり、私はそこになっているように見える

else if (TB_VideoLink.Text.Trim().Contains("http://www.youtube.com/embed/")) 
     { 
      youtube_url = TB_VideoLink.Text.Trim(); 
      int Count = youtube_url.IndexOf("/embed/", 7); 
      string cutid = youtube_url.Substring(Count,youtube_url.IndexOf("\" frameborder")); 

      LB_VideoCodeLink.Text = cutid; 
     } 

が、しかしコードがCutIDに転倒なぜ私は分からないのですか?

乾杯

+1

なぜ部分文字列ですか?あなたは本当にRegexがここにほしいと思う。 – Oliver

+0

正規表現は、より簡潔な解決策になります@Oliver、例を示したら、私はそれを評価します。 – tonycoupland

答えて

7

正規表現を使用する方がずっと簡単です。SubstringIndexOfはいつも私のものですが、それは私の個人的意見です。

この問題を解決する方法は次のとおりです。

Regex regexPattern = new Regex(@"src=\""\S+/embed/(?<videoId>\w+)"); 
Match videoIdMatch = regexPattern.Match(TB_VideoLink.Text); 

if (videoIdMatch.Success) 
{ 
    LB_VideoCodeLink.Text = videoIdMatch.Groups["videoId"].Value; 
} 

これは、指定したグループとして、それの後に、すべての単語の文字を抽出し、次に/まで/埋め込みまでのすべての文字を無視して、SRC =」を見つける、正規表現マッチを行います。

その後、取得することができますこの名前のグループの値。利点があり、これはFRAMEBORDERがSRC直後に発生していない場合でも動作しますが。これは便利です

希望、

ルーク

+0

これは私にとってはうまくいくようです ref:http://codesnippets.fesslersoft.de/get-the-youtube-videoid -from-url / – visual

2

サブストリングメソッドの2番目のパラメーターは、2番目のインデックスではなく、長さです。最初のテストから2番目のテストのインデックスを引いて、必要な長さを取得します。

else if (TB_VideoLink.Text.Trim().Contains("http://www.youtube.com/embed/")) 
    { 
     youtube_url = TB_VideoLink.Text.Trim(); 
     // Find the start of the embed code 
     int Count = youtube_url.IndexOf("/embed/", 7); 
     // From the start of the embed bit, search for the next " 
     int endIndex = youtube_url.IndexOf("\"", Count); 
     // The ID is from the 'Count' variable, for the next (endIndex-Count) characters 
     string cutid = youtube_url.Substring(Count, endIndex - Count); 

     LB_VideoCodeLink.Text = cutid; 
    } 

2つのテスト文字列のいずれかが存在しない場合には、さらに例外処理が必要です。

+0

埋め込みコードではどうすればよいですか?