2012-02-03 30 views
2

如何檢查任何URL是否包含一個或多個參數?使用正則表達式檢查URL是否包含任何參數

例如,如果URL是

.../PaymentGatewayManager?mode=5015 

那麼我們應該能夠知道,URL中包含一個參數。或者如果URL是

.../PaymentGatewayManager 

那麼我們應該能夠知道該URL不包含任何參數。或者,如果URL是

.../PaymentGatewayManager?mode=5015&test=456123&abc=78 

那麼我們應該能夠知道URL包含三個參數,我們也應該能夠知道參數名稱,在Java中使用任何正則表達式,價值觀。

+2

能否請你檢查這個[URL] [1] [1]:http://stackoverflow.com/questions/27745/getting-parts-of-a-url-regex 希望這是你的答案 – 2012-02-03 11:13:00

回答

5

如果你想用正則表達式來做到這一點(這可以優化,以及做一個組內搜索):

public static void main(String[] args) { 
    String input = ".../PaymentGatewayManager?mode=5015&test=456123&test2=SomeRandomValue&abc=78"; 
    if(input.contains("?")){ 
     System.out.println("It does contain parameters"); 
     input = "&" + input.substring(input.indexOf("?")+1) + "&"; 

     System.out.println(input); 

     Pattern p = Pattern.compile("&?(\\w.+?)=(.+?)&"); 
     Matcher m = p.matcher(input); 

     while(m.find()){ 
      System.out.println("Token ->" + m.group(1)); 
      System.out.println("Value ->" + m.group(2)); 
     } 
    } 
} 
3

使用java.net.URI的方法獲取有關URL的所有信息。

編輯:使用URI,而不是URL(感謝McDowell)。

+3

使用'java.net.URI'字符串操作;一些'URL'方法會導致網絡I/O。 – McDowell 2012-02-03 11:11:48

2

您可以使用String.split() URL,或使用java.util.StringTokenizer標記它,使用?作爲分隔符。如果您獲得多個部分,則確定該URL包含參數。

要獲取參數,請用相同的方法將第二部分拆分&。你會得到參數。按照=分割它們中的每一個將給出名稱和值。

相關問題