2011-03-18 75 views
1

我如何修剪YouTube网址,因此它只返回视频ID,例如http://www.youtube.com/watch?v=VPqTW-9U9nU。我将如何返回VPqTW-9U9nU。这必须针对多个输入的网址。我想使用正则表达式,但我根本不理解它。因此,如果有人有正则表达式的解决方案可能会在你升技解释更多的细节:)修剪网址字符串。 c#

+0

答案:正则表达式的方式http://stackoverflow.com/questions/1773822/get-youtube-video-id-from-html-code-with-php/ 1773972#1773972 – 2011-03-18 18:51:09

+0

这个问题更多关于解析URL与修剪它 – 2011-03-18 18:52:32

+0

我会推荐我对一个相关问题的回答:http://stackoverflow.com/questions/1773822/get-youtube-video-id-from-html -code与 - PHP/1773972#1773972。还要注意的是,自从我写这些以来,YouTube添加了他们的URL缩短器,它提供了形式为'http:// youtu.be/videoid'的URL。我使用了一个单独的正则表达式:'http://youtu.be/(? [A-Za-z0-9 _-] {11})' – 2011-03-18 23:06:49

回答

2

没有在这种情况下,需要正则表达式:

string url = "http://www.youtube.com/watch?v=VPqTW-9U9nU"; 
string videoId = url.Substring(url.IndexOf("?v=") + 3); 
+0

+1,但只有当v始终是最后一个变量网址。否则就需要更多的东西。 – BinaryTox1n 2011-03-18 18:49:12

1

为什么不坚持用简单的东西?

string youTubeUrl = "http://www.youtube.com/watch?v=VPqTW-9U9nU"; 
string id = youTubeUrl.Replace("http://www.youtube.com/watch?v=", String.Empty); 

正则表达式很方便,但有时候会矫枉过正,当你在不需要它们的地方使用它们时,会使你的代码更难理解。

13

没有做任何字符串操作,您可以使用UriParseQueryString

Uri uri = new Uri("http://www.youtube.com/watch?v=VPqTW-9U9nU"); 
var s = HttpUtility.ParseQueryString(uri.Query).Get("v"); 
+1

+1 - 这是针对此问题的更强大的解决方案 – BrokenGlass 2011-03-18 18:50:51

+1

+1,用于推荐使用现有工具 – 2011-03-18 18:51:20

0

尝试是这样的:

string url = "http://www.youtube.com/watch?v=VPqTW-9U9nU"; 
string video_id = url.Substring(0,url.LastIndexOf("=')+1); 

其他的答案看起来正确,太。

0

您也可以使用String.Split()

url.Split(new[] { '=' }, 2)[1] 
+2

我祈祷不会是那种不得不维护它的人。 – Snowbear 2011-03-18 19:35:24