我后台接收到请求以后,可能是service/dictory?name=aa&password=bb&123(里面随机数在中间)
                      还有可能是service/dictory?name=aa&123&password=bb(随机数在中间)等等
       接收到请求的随机数可以在url的任意一个后缀属性加我在程序中使用了memached来将url设置为主键,所以一旦有了随机数,就很难通过url为主键取值了
所以,我要去除url中的随机数,如何去除???谢谢啦%>_<%~

解决方案 »

  1.   

    你随机数是怎么加到url里的?
      

  2.   

    先截掉问号前边的url部分保存为一个StringBuffer
    再用split根据&符号分割各个参数,得到一个字符串数组
    分析数组,去除不带"="符号的参数再将url和字符串数组拼接起来这是比较简单的做法
      

  3.   

    用正则替换给灭掉吧:
    String url = "service/dictory?name=aa&password=bb&123"
    url = url.replaceAll("&\\d+(&|$)", "&");
      

  4.   

    这个应该就是对字符串的处理吧!?与&  或者& 与& 直接的字符串 不包含“=”将其移除。
      

  5.   


    "&\\d+(&|$)", "&"& 就是 & 了,没啥特别;
    \\d 是指数字;
    \\d+ 是指1~N个数字;
    | 是“或”的意思
    $ 是特殊含义字符,代表“串结束”总的来说就是从字符串中寻找:以 & 开头,中间有1个或多个数字,结尾是&或者正行都结束了的情况,然后替换为:& 
      

  6.   


      public static void main(String args[]){
      String URL = "service/dictory?name=aa&password=bb&123";
      Matcher m =Pattern.compile("&[^=]+(&|$)").matcher(URL);
      while(m.find()){
      System.out.println(m.group());
      }
      URL = URL.replaceAll("&[^=]+(&|$)","");
      System.out.println(URL);
      }
      

  7.   


    public static void main(String[] args) {

    //考虑三种情况
    String str1 = "service/dictory?123&name=aa&password=bb"; //随机数在开头
    String str2 = "service/dictory?name=aa&123&password=bb";//随机数在中间
    String str3 = "dictory?name=aa&password=bb&123"; //随机数在结尾

    String reg = "((?<=\\?)\\d+&)|((?<=&)\\d+&)|(&\\d+(?=$))";

    System.out.println(str1.replaceAll( reg, ""));
    System.out.println(str2.replaceAll(reg, ""));
    System.out.println(str3.replaceAll(reg, ""));