2016-12-14 4 views
-1

J'ai une url comme ça,regex string url

http://abc-xyz.com/AppName/service?id=1234&isStudent&stream&shouldUpdateRecord=Y&courseType

Je veux appliquer une regex avant de faire un appel de repos à un système 3ème partie. Cette regex devrait supprimer toutes les clés sans valeur. i.e. de cette url donnée, mon regex devrait supprimer "& isStudent", "flux &" et "& courseType" et je devrais être laissé,

http://abc-xyz.com/AppName/service?id=1234&shouldUpdateRecord=Y

Tous les pointeurs?

Répondre

1

Je ne peux pas le faire dans une regex, parce que le nombre de paramètres de clé seule est variable. Mais je peux le faire avec un programme court comme celui-ci

public class Playground { 

    public static void main(String[] args) { 
     String testInput = "http://abc-xyz.com/AppName/service?id=1234&isStudent&stream&shouldUpdateRecord=Y&courseType"; 

     String[] tokens = testInput.split("\\?"); 
     String urlPrefix = tokens[0]; 
     String paramString = tokens[1]; 

     String[] params = paramString.split("&"); 

     StringBuilder sb = new StringBuilder(); 
     sb.append(urlPrefix + "?"); 
     String keyValueRegex = "(\\w+)=(\\w+)"; 
     String amp = ""; // first time special 
     for (String param : params) { 
      if (param.matches(keyValueRegex)) { 
       sb.append(amp + param); 
       amp = "&"; // second time and onwards 
      } 
     } 

     System.out.println(sb.toString()); 

    } 

} 

La sortie de ce programme est le suivant:

http://abc-xyz.com/AppName/service?id=1234&shouldUpdateRecord=Y 
+0

Merci, Cela semble bon. – Deepak