2012-12-10 156 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

相關問題