gpt4 book ai didi

c# - 解析视频 ID 的 URL

转载 作者:太空狗 更新时间:2023-10-30 00:44:38 25 4
gpt4 key购买 nike

我曾经通过数据库中的链接嵌入 YouTube 视频。

YouTube 不再允许我以这种方式嵌入。相反,我需要从我存储的 URL 中提取视频 ID。

这是链接的示例:

http://www.youtube.com/watch?v=72xSxQIRelc&feature=youtube_gdata

我需要提取的ID是72xSxQIRelc。我知道我可以做类似的事情:

string vidID = 
preURL.Substring(preURL.LastIndexOf("v=") + 2,
preURL.Substring(preURL.LastIndexOf("v=") + 2).Length -
preURL.Substring(preURL.LastIndexOf("&feature")).Length)

我在这里看到一些 Regex 的东西可以做到这一点。我想知道我的方式是否相对效率低下。我也不是正则表达式功夫向导,所以我不确定如果 YouTube 更改 URL 结构,我看到的解决方案是否可扩展(在这种情况下,它被硬编码为需要 v= 以及 &feature)。

我的解决方案对我来说仍然很老套。有更有效的方法吗?


已添加

此应用包含在 silverlight 解决方案中,因此我应该在这里提及这一点。

一个已发布的解决方案是使用 HttpUtility.ParseQueryString。这看起来像是答案,直到我发现 Silverlight 的 HttpUtility 实现不包括 ParseQueryString 方法。

最佳答案

那么你应该只更新你的数据库

UPDATE 
[VideosTable]
SET
video_url =
SUBSTRING(
video_url,
CHARINDEX('v=', video_url) + 2,
CHARINDEX('&', video_url, CHARINDEX('v=', video_url)) -
(CHARINDEX('v=', video_url) + 2)
)
WHERE
video_url LIKE '%youtube.com%';

然后您可以简单地使用来自数据库的视频 ID...

如果您要从漏洞链接上传视频 ID,请改用 URI 对象

Uri youtube = new Uri("http://www.youtube.com/watch?v=72xSxQIRelc&feature=youtube_gdata");
string videoId = HttpUtility.ParseQueryString(youtube.Query)["v"];

Silverlight 更新

Silveright 缺少两个东西,对 System.Web.HttpUtilityParseQueryString 部分和 System.Collections.Specialized.NameValueCollection 的支持>

那么,为什么不自己添加该功能呢?

因为 HttpUtility 已经是一个 static 对象,你不能扩展它,但你可以轻松地为自己创建一些新的东西:

public static class MyHttpUtilities
{
public static System.Collections.Generic.Dictionary<string, string>
ParseQueryString(this string queryString)
{
System.Collections.Generic.Dictionary<string, string> r =
new Dictionary<string, string>();
// remove extra noise
queryString = queryString.TrimStart('?').Replace("amp;", "");
// split up and fill up Dictionary
foreach (string s in queryString.Split('&'))
{
if (s.Contains('='))
{
string[] par = s.Split('=');
r.Add(par[0], par[1]);
}
}
return r;
}
}

然后使用:

string videoId = MyHttpUtilities.ParseQueryString(youtube.Query)["v"],
feature = MyHttpUtilities.ParseQueryString(youtube.Query)["feature"];

关于c# - 解析视频 ID 的 URL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7374041/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com