使用子字符串提取YouTube视频的视频ID

本文关键字:视频 的视频 ID YouTube 提取 字符串 | 更新日期: 2023-09-27 18:12:39

我目前正在尝试从YouTube提供的嵌入url中提取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上,我不知道为什么??

欢呼

使用子字符串提取YouTube视频的视频ID

我总是发现使用正则表达式来处理这种事情要容易得多,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=",忽略/embed/之前的所有字符,然后提取其后面的所有单词字符作为命名组。

你可以得到这个命名组的值。这样做的好处是,即使frameborder没有直接出现在src.

之后,也可以工作。

希望这是有用的,

《路加福音》

Substring方法的第二个参数是长度,而不是第二个索引。用第一个测试减去第二个测试的索引,得到所需的长度。

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;
    }

当两个测试字符串中的任何一个不存在时,您可能应该有更多的异常处理。

与上面的答案相似,但被打败了。度

            //Regex with YouTube Url and Group () any Word character a-z0-9 and expect 1 or more characters +
        var youTubeIdRegex = new Regex(@"http://www.youtube.com/embed/(?<videoId>'w+)",RegexOptions.IgnoreCase|RegexOptions.Compiled);
        var youTubeUrl = TB_VideoLink.Text.Trim();
        var match = youTubeIdRegex.Match(youTubeUrl);
        var youTubeId = match.Groups["videoId"].Value; //Group[1] is ('w+) -- first group ()
        LB_VideoCodeLink.Text = youTubeId;