在Java中获取URL参数并从URL中提取特定文本

40

我有一个URL,需要从中获取v的值。

这是我的URL: http://www.youtube.com/watch?v=_RCIP6OrQrE

我该如何做呢?


什么是v?如果可以的话,请提供更多信息和代码。 - Harmeet Singh
你需要对YouTube URL进行什么操作吗?你是否需要使用子字符串方法从url-string中查找值v - sunil
我需要获取v=的值:http://www.youtube.com/watch?v=_RCIP6OrQrE - codezoner
@androidmaniac 看一下我的答案,它只返回 id - Harmeet Singh
@androidmaniac 嘿,安卓,顺便看看我的答案吧。我重写了它。该函数将支持多组YouTube网址。 - classicjonesynz
@androidmaniac,顺便说一下,我更新了我的答案。这段代码代表了从任何YouTube URL检索参数的更通用的方法。 - classicjonesynz
13个回答

0

这将适用于所有类型的YouTube网址:
如果网址可能是

youtube.com/?v=_RCIP6OrQrE
youtube.com/v/_RCIP6OrQrE
youtube.com/watch?v=_RCIP6OrQrE
youtube.com/watch?v=_RCIP6OrQrE&feature=whatever&this=that

Pattern p = Pattern.compile("http.*\\?v=([a-zA-Z0-9_\\-]+)(?:&.)*");
String url = "http://www.youtube.com/watch?v=_RCIP6OrQrE";
Matcher m = p.matcher(url.trim()); //trim to remove leading and trailing space if any

if (m.matches()) {
    url = m.group(1);        
}
System.out.println(url);

这将从您的url中提取视频id

更多参考资料


0

我的解决方案可能不太好

        String url = "https://www.youtube.com/watch?param=test&v=XcHJMiSy_1c&lis=test";
        int start = url.indexOf("v=")+2;
        // int start = url.indexOf("list=")+5; **5 is length of ("list=")**
        int end = url.indexOf("&", start);

        end = (end == -1 ? url.length() : end); 

        System.out.println(url.substring(start, end));
        // result: XcHJMiSy_1c

适用于以下情况:

  • https://www.youtube.com/watch?param=test&v=XcHJMiSy_1c&lis=test
  • https://www.youtube.com/watch?v=XcHJMiSy_1c

0
public static String getQueryMap(String query) {        
    String[] params = query.split("&");     
    for (String param : params) {           
       String name = param.split("=")[0];
       if ("YourParam".equals(name)) {
           return param.split("=")[1]; 
       }
    }
    return null;
}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接