2012-12-10 137 views
0

我从youtube链接中提取YouTube视频ID。该列表看起来像这样获取符号之间的字符串

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

我只想得到MMMC。

我用.replaceAll?

+1

检查正则表达式 - 请参阅sun教程http://docs.oracle.com/javase/tutorial/essential/regex/index.html – Katana24

+0

您是否尝试过用request.getParameter( “v”);在servlet中?它会直接给你mmmc。这是当然如果你使用servlets –

+1

这是值得看看http://stackoverflow.com/questions/3452546/javascript-regex-how-to-get-youtube-video-id-from-url?rq=1,它已一些相当发达的JavaScript解决方案 – RoryB

回答

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); 
0

这里的(使用番石榴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 
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,如果不行,你可以简单地删除该部分或用wilcard替换它,就像我所做的一样 - mmmc

相关问题