0

我正在从 youtube 链接中提取 youtube 视频 ID。列表看起来像这样

http://www.youtube.com/watch?v=mmmc&feature=plcp

我只想得到 mmmc。

我用过 .replaceAll 吗?

4

4 回答 4

3

三种方式:

  1. 网址解析:http: //download.oracle.com/javase/6/docs/api/java/net/URL.html
URL url = new URL("http://www.youtube.com/watch?v=mmmc&feature=plcp");
url.getQuery(); // return query string.
  1. 正则表达式示例在这里http://www.vogella.com/articles/JavaRegularExpressions/article.html

  2. 标记化

    String s = "http://www.youtube.com/watch?v=mmmc&feature=plcp";
    String arr[] = s.split("=");
    String arr1[] = arr[1].split("&");
    System.out.println(arr1[0]);
    
于 2012-12-10T10:01:27.563 回答
1

如果您想使用正则表达式,这可能是一个解决方案:

Pattern p = Pattern
.compile("http://www.youtube.com/watch\\?v=([\\s\\S]*?)\\&feature=plcp");

Matcher m = p.matcher(youtubeLink);

if (m.find()) {
return m.group(1);
}
else{
throw new IllegalArgumentException("invalid youtube link");
}

当然,这仅在该功能始终为 plcp 时才有效,如果不是,您可以简单地删除该部分或将其替换为通配符,就像我对 mmmc 所做的那样

于 2012-12-10T10:50:03.110 回答
0

编辑:现在我知道你在找什么我希望:

String url= "http://www.youtube.com/watch?v=mmmc&feature=plcp";
String search = "v=";
int index     = url.indexOf(search);
int index2    = url.indexOf("&",index);
String found  = url.substring(index+2,index2);
System.out.println(found);
于 2012-12-10T09:57:10.807 回答
0

这是一个通用解决方案(使用 Guava MapSplitter):

public final class UrlUtil {
    /**
     * Query string splitter.
     */
    private static final MapSplitter PARAMS_SPLITTER = Splitter.on('&').withKeyValueSeparator("=");

    /**
     * Get param value in provided url for provided param.
     * 
     * @param url Url to use
     * @param param Param to use
     * @return param value or null.
     */
    public static String getParamVal(String url, String param)
    {
        if (url.contains("?")) {
            final String query = url.substring(url.indexOf('?') + 1);
            return PARAMS_SPLITTER.split(query).get(param);
        }

        return null;
    }

    public static void main(final String[] args)
    {
        final String url = "http://www.youtube.com/watch?v=mmmc&feature=plcp";
        System.out.println(getParamVal(url, "v"));
        System.out.println(getParamVal(url, "feature"));
    }
}

输出:

mmmc
plcp
于 2012-12-10T10:05:51.233 回答